복붙노트

[HADOOP] hadoop 클러스터에서 Mapreduce 실행

HADOOP

hadoop 클러스터에서 Mapreduce 실행

Mapreduce가 정확히 어떻게 작동하는지에 대해 약간 혼란 스럽습니다. 몇 가지 기사를 읽었지만 정답을 얻지 못했습니다.

대본:

HDFS 위에 1TB 크기의 파일을 저장했습니다 (/ user / input / 위치에 저장되어 있다고합시다). 복제는 3이고 블록 크기는 128MB입니다.

이제 mapreduce를 사용하여이 1TB 파일을 분석하고 싶습니다. 블록 크기가 128MB이므로 총 8192 개의 블록이 있으며 클러스터에 100 대의 시스템이 있다고 간주합니다.

8192 개의지도 작업이 100 개의 모든 노드에서 생성되어 매퍼 수를 균등하게 분배합니까? 또는 복제 된 데이터가있는 노드에서만 실행됩니다.

해결법

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

    1.매퍼의 수는 복제 요소가 아닌 InputSplits에 따라 다릅니다.

    매퍼의 수는 복제 요소가 아닌 InputSplits에 따라 다릅니다.

    InputSplits의 내부를 이해하려면 아래 게시물을 참조하십시오.

    Hadoop 프로세스 레코드는 블록 경계에서 어떻게 분할됩니까?

    매퍼 및 리듀서의 수는 Hadoop Framework에서 결정합니다.

    자세한 내용은 아래 게시물을 참조하십시오.

    감속기의 기본 수

    간단히하기 위해 HDFS 블록과 InputSplit이 여러 데이터 노드에 걸쳐있는 데이터없이 동일하다고 가정합니다.

    귀하의 경우, 1TB 파일 처리에는 8192 맵이 필요합니다. 지도 작업을 시작하는 동안지도 작업은 데이터가있는 노드에서 Mapper를 실행하려고합니다. 8192 블록의 1TB 파일이 100 개의 노드에 균등하게 분배되지 않았을 수 있습니다. 이들이 100 개의 노드에 균등하게 분배되면 Framework는 100 개의 모든 노드에서 맵 작업을 실행합니다. 데이터 로컬 리티는 데이터 노드 선택에서 핵심적인 역할을합니다.

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

    2.실행할 매퍼 수는 노드 또는 블록 수 또는 총 입력 분할 수에만 의존하는 다른 것에 의존하지 않습니다. 데이터베이스 컨텍스트에서 분할은 행 범위에 해당 할 수 있습니다.

    실행할 매퍼 수는 노드 또는 블록 수 또는 총 입력 분할 수에만 의존하는 다른 것에 의존하지 않습니다. 데이터베이스 컨텍스트에서 분할은 행 범위에 해당 할 수 있습니다.

    이제 HDfS의 블록은 128MB이고 입력 분할의 크기는 256MB 일 수 있습니다.이 경우 2 개의 블록을 포함하는이 입력 분할에 대해 1 개의 매퍼 만 실행됩니다.  이제 질문은 입력 분할이 어떻게 생성됩니까? 이러한 분할은 분할 작성을 담당하는 getSplit 및 createrecordreader 메소드를 포함하는 InputFormat 클래스에 의해 작성되며 분할 작성 방법을 변경하려는 경우이 메소드를 대체 할 수 있습니다.

    이 맵퍼 작업은 클러스터의 다른 노드에서 시작되지만 균등하게 분배 될 것이라는 보장은 없습니다. Mapreduce는 항상 로컬 데이터를 처리 할 노드에 매퍼 작업을 제공하려고합니다. 이것이 가능하지 않으면 매퍼 작업이 최상의 리소스를 가진 노드에 제공됩니다.

    입력 분할에는 실제 데이터가 포함되어 있지 않습니다. 그들은 데이터를 참조합니다. 이러한 저장된 위치는 작업 할당시 mapredUce에 도움이됩니다.

    이 링크를 방문하여 http://javacrunch.in/Yarn.jsp를 방문하여 원사가 작업 할당에 어떻게 작동하는지에 대한 인상을 줄 것입니다. map reduce http://javacrunch.in/MR.jsp의 내부 작업을 위해 이것을 방문 할 수도 있습니다.

    이것이 귀하의 질문을 해결하기를 바랍니다

  3. from https://stackoverflow.com/questions/41914862/mapreduce-execution-in-a-hadoop-cluster by cc-by-sa and MIT license