4. 셔플
매퍼의 출력 데이터를 정렬하여 리듀서의 입력
데이터로 전달하는 것
맵 태스크와 리듀스 태스크 사이의 데이터 전달
과정
내부적으로 복잡한 단계로 구성
셔플설정에 따라 잡의 성능에 지대한 영향을 줄
수 있음
2014-04-17 교통 빅데이터 처리 세미나 4
5. 2014-04-17 교통 빅데이터 처리 세미나 5
1.스플릿 생성
입력 스플릿
입력 스플릿
입력 스플릿
맵1
맵2
맵3
2. 맵 3. 스필 4. 병합
리듀스1
리듀스2
5. 복사 6. 정렬 7. 리듀스
메모리 버퍼 파티션 맵 출력 데이터 메모리 버퍼,
파일
파일
잡의 입력 데이터는 논리적인 단위인
입력 스플릿으로 분리된 후,
스플릿별로 하나의 맵 태스크가 실행
6. 셔플 튜닝
버퍼가 커지면 로컬에 저장
될 출력데이터가 줄어든다.
◼ is.sort.mb
기본값 100MB
300MB이상 설정시 JVM설정
필요
버퍼가 임계치에 다다르면
로컬디스크로 스필한다.
◼ is.sort.spill.percent
기본값 80%
교통 빅데이터 처리 세미나 6
3. 스필
메모리 버퍼 파티션
2. 맵
맵1
맵2
맵3
2014-04-17
7. 교통 빅데이터 처리 세미나 7
4. 병합 5. 복사
파티션 맵 출력 데이터
메모리 버퍼,
파일
4.병합할 라운드 개수 증가 시
에 병합개수가 줄어듬
◼ io.sort.factor
4.출력 파일에 접근하는 스레드
개수 설정
◼ tasktracker.http.threads
5.맵태스크 출력데이터 복사 스
레드 개수 설정
◼ Mapred.reduce.parallel.copies
5.복사된 출력데이터가 저장되
는 리듀스용 태스크트래커의 메
모리 버퍼 사이즈
◼ Mapred.job.shuffle.input.buffe
r.percent
기본값 힙메모리의 70%
2014-04-17
8. 셔플 튜닝 (계속)
5. 버퍼가 파일로 저장되는 사용 임계치
◼ mapred.job.shuffle.merge.percent
기본값 66%
5. 버퍼가 파일로 저장되는 처리해야할 파일 개
수 도달 한계
◼ Mapred.inmem.merge.threshold
기본값 1000
2014-04-17 교통 빅데이터 처리 세미나 8
9. 셔플 튜닝
정렬된 출력물을 리듀스 함
수의 병합 라운드 설정
◼ io.sort.fact
◼ ex)
20개의 맵 출력 데이터
io.sort.fact = 10
각 라운드는 파일 10개당 하나
의 병합 파일을 만듬
최종적으로 2개의 파일 생성
2014-04-17 교통 빅데이터 처리 세미나 9
리듀스1
리듀스2
6. 정렬 7. 리듀스
파일
10. 콤바이너 클래스
매퍼의 출력 데이터의 크기를 줄이는 기능
◼ job.setCombinerClass(***Reducer.class);
◼ 파라미터로는 반드시 리듀서 클래스로 설정
2014-04-17 교통 빅데이터 처리 세미나 10
<Read, 1>
<a , (1,1)>
<book, (1,1)>
<write, (1)>
<Read, 1>
<a, 1>
<book, 1>
<write, 1>
<a, 1>
<book, 1>
콤바이너 적용 전 콤바이너 적용 후
11. 압축
맵 태스크의 출력 데이터를 압축하여 전송
파일 IO횟수와 네트워크 전송량이 감소하는 효
과를 얻을 수 있음
하둡은 Gzip, Snappy, Bzip 등의 압축 포맷 지
원
mapred.compress.output
2014-04-17 교통 빅데이터 처리 세미나 11
12. DFS 블록 사이즈 수정
더 많은 수의 블록으로 분리되면 그만큼 많은 맵
태스크가 수행
2014-04-17 교통 빅데이터 처리 세미나 12
입력 파일 블록 사이즈 맵 태스크 수
100GB
32MB (100 * 1024) / 32 = 3200
64MB (100 * 1024) / 64 = 1600
128MB (100 * 1024) / 128 = 800
13. JVM 재사용
태스크 트래커는 맵 태스크와 리듀스 태스크를
실행할 때 각각 별도의 JVM을 실행한다.
JVM 재사용 예
◼ 매퍼나 리듀서의 초기화 시간이 오래걸리는 경우
◼ 짧은 시간 안에 많은 매퍼를 실행해야 하는 경우
mapred.job.reuse.jvm.num.tasks
2014-04-17 교통 빅데이터 처리 세미나 13
14. 투기적 잡 실행
일부 태스크의 작업이 지연되는 경우 다른 데이
터노드에서 동일한 태스크를 병렬로 실행
권장하는 방법은 아님
◼ 작업 지연의 원인을 해결하는 것이 우선
2014-04-17 교통 빅데이터 처리 세미나 14
15. END
Email
◼ Yunsou.lee@gmail.com
참조
◼ 시작할게요 하둡프로그래밍 _ 정재화
◼ http://hadoop.apache.org/docs/r2.3.0/hadoop-
yarn/hadoop-yarn-site/YARN.html
◼ http://hortonworks.com/get-started/yarn
2014-04-17 교통 빅데이터 처리 세미나 15