티스토리 뷰

반응형

flink 에서 hive 를 연동할때, catalog 를 등록하면 바로 테이블 조회가 가능하다. 그런데 최대 슬롯은 10개이고, 여유 슬롯이 7개뿐인데 터무니없이 크게 task 를 할당해서 작업이 취소되는 경우가 발생했다. 다음과 같이 간단한 쿼리를 실행했더니 터무니없이 큰 640개의 task 가 요구되었고 당연히 리소스 부족으로 종료되었다. 해결하는 방법은 hive source 의 parallel 을 제한하면 해결된다.

Flink SQL> CREATE CATALOG myHive with (
 'type' = 'hive',
 'hive-conf-dir' = '/usr/hdp/2.6.2.0-205/hive/conf'
);

Flink SQL> select count(*) from myHive.myDb.t_sample where ymd = '2021-03-01';
[INFO] Result retrieval cancelled.

해결방법

"table.exec.hive.infer-source-parallelism.max" 설정이 기본 1000개이므로 이 설정값을 낮추면 된다.

참고로 10개의 슬롯만 가용가능하기 때문에 5 수준으로 낮춰서 돌리면, 다음과 같이 640개라는 터무니없이 큰 리소스를 요청하지 않고 실행에 성공한다. (기존에는 리소스를 기다리다가 할당못받고 취소되버렸음)

Flink SQL> set table.exec.hive.infer-source-parallelism.max=5;
[INFO] Session property has been set.

Flink SQL> select count(*) from myHive.myDb.t_sample where ymd = '2021-03-01';

               EXPR$0
----------------------
            343423324

참고로 관련된 설정에 대한 설명은 flink 의 document 를 참고하면된다.

https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/connectors/table/hive/hive_read_write/#table-exec-hive-infer-source-parallelism-max

 

Hive Read & Write

Hive Read & Write # Using the HiveCatalog, Apache Flink can be used for unified BATCH and STREAM processing of Apache Hive Tables. This means Flink can be used as a more performant alternative to Hive’s batch engine, or to continuously read and write dat

nightlies.apache.org

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함