2011-12-27 14 views
8

http://gbif.blogspot.com/2011/01/setting-up-hadoop-cluster-part-1-manual.html을 읽고 나서 우리는 mapred.reduce.parallel.copies를 실험하고 싶습니다.mapred.reduce.parallel.copies를 조정하는 방법은 무엇입니까?

블로그는 "로그를 매우 신중하게보고있다"고 언급합니다. 우리가 우리가 달콤한 자리에 도착했다는 것을 어떻게 알 수 있습니까? 우리는 무엇을 찾아야합니까? 우리가 지나치게 병렬화되고 있음을 어떻게 감지 할 수 있습니까?

답변

6

기본적으로 CPU, RAM, 디스크 및 네트워크의 네 가지 항목을 찾아야합니다. 설정이 이러한 메트릭의 임계 값을 초과하면 한계를 초과한다는 것을 추론 할 수 있습니다. 예를 들어 "mapred.reduce.parallel.copies"의 값을 사용 가능한 코어 수보다 훨씬 큰 값으로 설정 한 경우이 속성을 기반으로 대기 상태에서 너무 많은 스레드가 종료됩니다. 스레드 맵 출력을 가져 오기 위해 생성됩니다. 그 네트워크에 추가로 압도 당할 수도 있습니다. 또는 셔플 할 중간 출력이 너무 많으면 디스크 기반 셔플이 필요하므로 작업이 느려지므로 RAM 기반 셔플보다 느립니다. RAM을 기준으로 "mapred.job.shuffle.input.buffer.percent"에 현명한 값을 선택하십시오 (기본값은 Reducer 힙의 70 %로 보통 좋음). 그래서, 이것들은 당신이 지나치게 병렬 처리를하고 있는지 아닌지를 알려줄 것입니다. 고려해야 할 많은 것들이 있습니다. "Hadoop Definitve Guide"의 6 장을 읽어 보시기 바랍니다.

당신이 효율적으로 당신의 작업을하기 위해 취할 수있는 조치의 일부

는 데이터 전송을 제한하는 결합기를 사용하여 같은 등

HTH

PS를 중간 압축을 사용하고 있습니다 : 대답을 "mapred.reduce.parallel.copies"에만 그다지 특이한 것은 아닙니다. 일반적으로 작업 조정에 대해 알려줍니다. 실제로이 속성 만 설정하면 큰 도움이되지 않습니다. 다른 중요한 속성도 고려해야합니다.

+1

통찰력을 가져 주셔서 감사합니다! –

1

"스위트 스폿"에 도달하는 것은 가장 중요한, 일반적으로 전반적인 작업 시간을 고려한 최상의 결과를 제공하는 매개 변수를 찾는 것입니다. 어떤 매개 변수가 작동하는지 알아 보려면 Hadoop과 함께 제공되는 MrBench, TestDFSIO 및 NNBench와 같은 프로파일 링 도구를 사용하는 것이 좋습니다. 이것들은 hadoop-mapreduce-client-jobclient - *. jar에 있습니다.

이 명령을 실행하면 위에서 언급 한 벤치 마크 프로그램 이외에도 사용할 수있는 벤치 마크 프로그램이 많이 표시됩니다.

하둡 ./share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*.jar

그때, 기준 벤치 마크를 제공하기 위해, 기본 매개 변수와 함께 실행 테스트를 실행 변경 제안

하나의 매개 변수와 재방송. 약간의 시간이 걸리지 만 가치가 있습니다. 특히 매개 변수를 변경하고 벤치 마크를 실행하는 스크립트를 사용하는 경우 더욱 그렇습니다.

+0

이 도구를 사용하면 하프 스트리밍 작업을 벤치마킹 할 수 있습니까? –

+0

직접적으로 아니오. 이들 각각은 전체지도/축소 프로그램이며 Hadoop Streaming은 지정된 매퍼와 축소 기가 필요합니다. 즉, 코드를보고 항아리에서 mapper 및 reducer 클래스를 직접 지정한 경우 이러한 프로그램 중 하나를 사용할 수 있습니다. 나는이 결과가 프로그램을 직접 실행하는 것과 거의 같을 것이라고 희망하지만, 확실하게하기 위해 시도해야 할 것입니다. – greedybuddha

관련 문제