복붙노트

[HADOOP] MR 입력 분할 정보

HADOOP

MR 입력 분할 정보

내가 파일을 HDFS로 복사 할 때 파일 분할과 매퍼 입력을 위해 파일에서 입력 분할은 완전히 두 가지 접근 방식이라는 것을 알았습니다.

여기 내 질문입니다.

내 File1 크기가 128MB이고 두 블록으로 분할되어 hadoop 클러스터의 두 개의 다른 데이터 노드 (Node1, Node2)에 저장되었다고 가정하십시오. 이 파일에서 MR 작업을 실행하고 각각 70MB와 58MB의 두 가지 입력 분할을 얻었습니다. 첫 번째 매퍼는 입력 분할 데이터 (크기 70MB)를 가져 와서 node1에서 실행되지만 Node1에는 64MB의 데이터 만 있고 나머지 2MB는 Node2에 표시됩니다.

내 관심사가 어색하면 사과드립니다.

해결법

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

    1.64MB의 데이터는 노드 1에 기록되고 6MB의 데이터는 노드 2에 기록됩니다.

    64MB의 데이터는 노드 1에 기록되고 6MB의 데이터는 노드 2에 기록됩니다.

    파일 축소 알고리즘은 파일의 실제 블록에서 작동하지 않습니다. 논리적 입력 분할에서 작동합니다. 입력 분할은 레코드가 작성된 위치에 따라 다릅니다. 레코드는 두 개의 맵퍼에 걸쳐있을 수 있습니다.

    예를 들어, 63KB의 데이터와 레코드 길이 이후의 레코드 시작이 2MB라고 가정하십시오. 이 경우 1MB는 ​​노드 1의 일부이고 다른 1MB는 ​​노드 2의 일부입니다. 다른 1MB의 데이터는 맵 작업 중에 노드 2에서 노드 1로 전송됩니다.

    논리 분할 대 물리 블록에 대한 이해를 돕기 위해 아래 그림을보십시오.

    일부 SE 질문을 살펴보십시오.

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

    Hadoop / HDFS 파일 분할 정보

    MapReduce 데이터 처리는 이러한 입력 분할 개념에 의해 이루어집니다. 특정 응용 프로그램에 대해 계산 된 입력 분할 수에 따라 매퍼 작업 수가 결정됩니다.

    이러한 각 매퍼 작업은 가능한 경우 입력 분할이 저장된 슬레이브 노드에 할당됩니다. 리소스 관리자 (또는 Hadoop 1 인 경우 JobTracker)는 입력 분할이 로컬로 처리되도록 최선을 다합니다.

    데이터 노드의 경계를 넘는 입력 분할로 인해 데이터 지역성을 달성 할 수없는 경우 일부 데이터는 한 데이터 노드에서 다른 데이터 노드로 전송됩니다.

  2. from https://stackoverflow.com/questions/33763772/about-mr-inputsplit by cc-by-sa and MIT license