MapReduce 작업 및 자원 할당 개념 정리 [1]

MapReduce

 

* map task 는 보통 노드당 10~100 실행되게, CPU 부하가 적은 경우 300개 까지도… (메뉴얼상 얘기고 공식은 아래를 참고)

 

* map or reduce task 1분 이상 실행되게 (그 이하의 경우 작업 할당 오버헤드가 크다)

 

* map task 수는 많을수록 좋으나, 아래 조건에는 걸리지 않게 설정하는게 좋다.

 

개별 map task 실행 시간이 1분 이상 (그 이하일 경우 작업 할당 오버헤드가 더 크다)

 

하둡 클러스터 전체 task 실행 갯수 이하 (> 100 개 동시 실행 가능 클러스터에 101 map 실행 시, 100개의 map task 가 비슷한 시간에 끝나고 101 번째 map task 가 나중에 혼자 돌고 그 이후에 reduce task 완료가 가능해진다)

 

* CPU 75% 이하 사용 조건에서 total task (Map + Reduce) > num_cores 되게, 8 core 의 경우 10 slot 추천 (M:R 비율 8:2, 7:3 추천)

 

* reduce task 는 클러스터의 최대 reduce task 실행 갯수와 같거나, 조금 적게 설정하는걸 추천.

 

* map task 는 기본적으로 input file / dfs.blocksize 로 설정 되나 실행 시 옵션으로 변경 가능하며

 

hadoop distcp 명령으로 input file blocksize 변경(default blocksize 와 다르게)하여(복사) 작업하는 방법도 있다.

 

* 실행 시 커맨드 옵션 조정으로 아래와 같이 변경 가능 (단 소스에 관련 기능 지원되게 작성하여야 함. https://hadoopi.wordpress.com/2013/06/05/hadoop-implementing-the-tool-interface-for-mapreduce-driver/)

 

1> 1024MB input file / 128MB blocksize = 기본값 8 map task 실행을 16 map task 실행으로 변경

 

hadoop jar hadoop-examples.jar wordcount -Dmapreduce.input.fileinputformat.split.maxsize=67108864 input output

 

mapreduce.input.fileinputformat.split.maxsize 환경변수 변경하여 map task 를 위한 최대 split 크기를 64MB ( 64 * 1024^2 ) 로 제한 ( 1024 / 64 = 16 )

 

2> 1024MB input file / 128MB blocksize = 기본값 8 map task 실행을 4 map task 실행으로 변경

 

hadoop jar hadoop-examples.jar wordcount -Dmapreduce.input.fileinputformat.split.minsize=266338304 input output

 

mapreduce.input.fileinputformat.split.minsize 환경변수 변경하여 map task 를 위한 최소 split 크기를 256MB ( 256 * 1024^2 ) 로 상향 ( 1024 / 256 = 4 )

 

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...