본문 바로가기
빅데이터/hive

[hive-tez] 파일 개수와 사이즈에 따른 그룹핑 사이즈 설정과 처리 속도 차이

by hs_seo 2021. 2. 16.

하이브를 이용해서 데이터를 처리할 때 파일의 개수와 사이즈가 중요합니다. 동일한 쿼리에서도 설정에 따라 속도차이가 많이 날 수 있습니다.

SELECT A, count(*)
  FROM tbl
 GROUP BY A
 ORDER BY A;
  • 칼럼 A로 파티셔닝
  • 파티션당 60 여개의 ORC 파일
  • 파일당 10~20KB

이 상황에서 TEZ엔진 기본설정으로 쿼리를 실행하면 2148초가 걸립니다. 파일의 사이즈가 작아서 매퍼가 작게 생성되지만, ORC 파일의 특성상 하나의 파일에 많은 데이터가 들어가게 되고, 이 데이터를 모두 처리하는데 많은 메모리가 소모되기 때문입니다.

이런 경우 TEZ엔진의 그룹핑 사이즈를 조절하여 매퍼의 개수를 늘려서, 하나의 매퍼가 처리하는 데이터를 줄이면 속도가 빨라지는 것을 확인할 수 있습니다. 설정 변경을 통해 다음과 같이 시간이 변경되는 것을 확인할 수 있었습니다.

설정 크기 매퍼개수 시간
tez.grouping.max-size 1G 3 2148.009
tez.grouping.max-size 25600 8671 139.95
tez.grouping.max-size 256000 1231 51.30

TEZ 설정 변경

set tez.grouping.max-size=256000;
set tez.grouping.min-size=128000;
반응형