2013-10-30 3 views

답변

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
  • 메모리에지도 출력을 저장하는 감속기의 힙의 비율입니다.

은 의심의 여지 더 튜닝 기회하지 않고있다, 그러나이 내가 꽤 많은 시간과 장난을 보낸 사람입니다.

+0

감사합니다. 어떻게''내 mapred.map.child.java.opts'' 변경할 수 있습니다 코드는? 노드는 Hadoop 클러스터의 설정 파일에 접근 할 수 있습니다. –

+0

구성 conf = new Configuration(); conf.set ("mapred.child.java.opts", "원하는 힙 크기"); Job job = new Job (conf); – Thejas