복붙노트

[HADOOP] 얼마나 많은 노드가 맵 작업을 줄이고 작업을 줄일 것인지를 결정하는 방법

HADOOP

얼마나 많은 노드가 맵 작업을 줄이고 작업을 줄일 것인지를 결정하는 방법

나는 새삼 스럽다. 나는 그것을 이해하려고 노력하고있다. 내가 hadoop에 대해 이야기하고있는 Im. MapReduce 프로그램에서 MapReduce를 수행하는 입력 파일이있을 때 나는 Split의 매개 변수를 말합니다. 그래서 분할과 같은 많은 맵 작업을 만들 것입니다, 맞습니까?

자원 관리자는 파일이있는 위치를 알고 데이터가있는 노드로 작업을 전송하지만 얼마나 많은 노드가 작업을 수행 할 것인가? 지도가 donde되면 shuffle이 있습니다. 어느 노드가 reduce 작업을 수행 할지는 해시지도를 담당하는 파티셔가 결정합니다. 맞습니까? 얼마나 많은 노드가 작업을 줄입니까? 지도를 만든 노드가 작업을 너무 줄일 것입니까?

고맙습니다.

TLDR : 클러스터가 있고 MapReduce 작업을 실행하는 경우 Hadoop은 얼마나 많은 노드가 맵 작업을 수행하고 어떤 노드가 감소 작업을 수행할지 결정합니다.

해결법

  1. ==============================

    1.얼마나 많은지도가 있습니까?

    얼마나 많은지도가 있습니까?

    입력 데이터가 10TB이고 블록 크기가 128MB 인 경우 Configuration.set (MRJobConfig.NUM_MAPS, int) (프레임 워크에 대한 힌트 만 제공)을 사용하여 훨씬 더 높게 설정하지 않는 한 82,000 개의 맵이 생성됩니다 .

    얼마나 많은 것이 줄어든가?

    올바른 감소 수는 0.95 또는 1.75 배 (<노드 수> * <노드 당 최대 컨테이너 수>)로 표시됩니다.

    0.95를 사용하면 모든 감소가 즉시 시작되어지도가 완료되면지도 출력을 전송할 수 있습니다. 1.75를 사용하면 더 빠른 노드는 1 차 감축을 끝내고로드 균형 조정 작업을 훨씬 더 효과적으로 수행 할 수있는 두 번째 물결을 시작합니다.

    감소 수를 늘리면 프레임 워크 오버 헤드가 증가하지만로드 균형 조정이 증가하고 실패 비용이 낮아집니다.

    감속기 NONE

    줄일 필요가없는 경우 reduce-tasks 수를 0으로 설정하는 것이 합법적입니다.

    Reduce 작업을위한 노드는 무엇입니까?

    mapreduce.tasktracker.reduce.tasks.maximum과 같은 구성 매개 변수에 따라 노드 당 매퍼 수와 감속기 수를 구성 할 수 있습니다.

    이 매개 변수를 0으로 설정하면 해당 노드가 작업 축소를 고려하지 않습니다. 그렇지 않으면 클러스터의 모든 노드가 Reduce 작업을 수행 할 수 있습니다.

    출처 : Apache Reduce 튜토리얼을 Apache에서 가져옵니다.

    참고 : 특정 작업에 대해 mapreduce.job.maps 및 mapreduce.job.reduces를 설정할 수 있습니다. 그러나 효과적이지 않을 수 있습니다. 지도 및 Reduce 작업의 수를 결정하기 위해 Map Reduce Framework에 대한 결정을 남겨 두어야합니다.

    편집하다:

    어떤 감속기 노드를 결정 하는가?

    두 개의 노드 N1과 N2에서 사용할 수있는 슬롯을 동일한 크기로 줄이고 N1에서 N2를로드 한 다음 Reduce 작업을 N2에 할당한다고 가정합니다. 로드와 슬롯 수가 모두 같으면 리소스 관리자에게 첫 번째 하트 비트를 보내는 사람이 작업을 가져옵니다. 이는 감축 할당을위한 코드 블록입니다. http : //grepcode.com/file/repository.cloudera.com/content/repositories/releases/com.cloudera.hadoop/hadoop-core/0.20.2-320/org/apache /hadoop/mapred/JobQueueTaskScheduler.java#207

  2. ==============================

    2.기본적으로 맵퍼의 수는 맵 축소에 대한 입력의 분할 (블록) 수와 같습니다.

    기본적으로 맵퍼의 수는 맵 축소에 대한 입력의 분할 (블록) 수와 같습니다.

    이제 노드에 대해 Hadoop 2에서는 각 노드가 자체 NodeManager (NM)를 실행합니다. NM의 작업은 ResourceManager (RM)에 의해 할당 된 응용 프로그램 컨테이너를 관리하는 것입니다. 기본적으로 각 작업은 개별 컨테이너에서 실행됩니다. 매퍼 작업을 실행하려면 ApplicationMaster가 ResourceManager에서 컨테이너를 협상합니다. 컨테이너가 할당되면 NodeManager는 작업을 시작하고 모니터링합니다.

    다시 축소 작업은 컨테이너에서도 실행됩니다. ApplicationMaster (응용 프로그램 (작업))는 RM에서 컨테이너를 협상하고 감속기 작업을 시작합니다. 대부분 그들은 서로 다른 노드와 매퍼 노드에서 실행됩니다.

    모든 작업의 ​​기본 감속기 수는 1입니다. 감속기 수는 작업 구성에서 설정할 수 있습니다.

  3. from https://stackoverflow.com/questions/33282121/how-hadoop-decides-how-many-nodes-will-do-map-and-reduce-tasks by cc-by-sa and MIT license