Hadoop 작업에서 어떤 노드가 정렬/셔플 링 단계를 수행합니까? 해당 노드의 메모리를 늘리면 정렬/셔플의 성능이 향상됩니까?Hadoop에서 키를 정렬/셔플하는 노드는 무엇입니까?
1
A
답변
1
정렬 및 셔플 페이더는 매퍼와 리 듀서로 나뉩니다. 이것이 매퍼가 계속 실행되는 동안 Reduce % 증가 (보통 33 %까지)하는 이유입니다. 에 따라 달라질 정렬 버퍼 메모리 및 그에서 성능 이득이 증가
:
a) 키의 사이즈/전체 수는 매퍼
b) 매퍼 작업 성격에 의해 방출 된 (IO 집약적 CPU 집약적 인)
C)
D) 데이터 비대칭 주어진 노드에서 사용 가능한 기본 메모리,지도 축소/슬롯 (점유)
당신은 https://www.inkling.com/read/hadoop-definitive-guide-tom-white-3rd/chapter-6/shuffle-and-sort
2
관련 @ 자세한 정보를 찾을 수 있습니다 - 내 경험 - mapred.site.xml에서 조정하는 매개 변수는 다음과 같습니다
io.sort.mb
이것은 매퍼의 출력 버퍼입니다. 이 버퍼가 가득 차면 데이터가 정렬되어 디스크로 유출됩니다. 이상적으로는 많은 유출을 피하십시오. 이 메모리는 maptask 힙 크기의 일부입니다.mapred.map.child.java.opts
지도 작업의 힙 크기가 높을수록 출력 버퍼 크기를 높일 수 있습니다.- 원칙적으로 감소 작업의 수 또한 셔플 속도에 영향을줍니다. 감소 라운드 수는 감소 슬롯의 총 수/감소 태스크 수입니다. 초기 셔플 (맵 단계 중)은 활성 리듀서에만 데이터를 셔플합니다. 따라서
mapred.reduce.tasks
도 관련성이 있습니다. io.sort.factor
은 병합 정렬을 수행하는 스레드의 수 (맵과 축소면 모두)입니다.- 압축은 (는 감속기 매퍼에서 전송 속도를 높여하지만 COMPR/decompr는 비용에 온다 큰 영향을 미친다!
mapred.job.shuffle.input.buffer.percent
메모리에지도 출력을 저장하는 감속기의 힙의 비율입니다.
은 의심의 여지 더 튜닝 기회하지 않고있다, 그러나이 내가 꽤 많은 시간과 장난을 보낸 사람입니다.
감사합니다. 어떻게''내 mapred.map.child.java.opts'' 변경할 수 있습니다 코드는? 노드는 Hadoop 클러스터의 설정 파일에 접근 할 수 있습니다. –
구성 conf = new Configuration(); conf.set ("mapred.child.java.opts", "원하는 힙 크기"); Job job = new Job (conf); – Thejas