[HADOOP] MR 입력 분할 정보
HADOOPMR 입력 분할 정보
내가 파일을 HDFS로 복사 할 때 파일 분할과 매퍼 입력을 위해 파일에서 입력 분할은 완전히 두 가지 접근 방식이라는 것을 알았습니다.
여기 내 질문입니다.
내 File1 크기가 128MB이고 두 블록으로 분할되어 hadoop 클러스터의 두 개의 다른 데이터 노드 (Node1, Node2)에 저장되었다고 가정하십시오. 이 파일에서 MR 작업을 실행하고 각각 70MB와 58MB의 두 가지 입력 분할을 얻었습니다. 첫 번째 매퍼는 입력 분할 데이터 (크기 70MB)를 가져 와서 node1에서 실행되지만 Node1에는 64MB의 데이터 만 있고 나머지 2MB는 Node2에 표시됩니다.
내 관심사가 어색하면 사과드립니다.
해결법
-
==============================
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)는 입력 분할이 로컬로 처리되도록 최선을 다합니다.
데이터 노드의 경계를 넘는 입력 분할로 인해 데이터 지역성을 달성 할 수없는 경우 일부 데이터는 한 데이터 노드에서 다른 데이터 노드로 전송됩니다.
from https://stackoverflow.com/questions/33763772/about-mr-inputsplit by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] “ADD JAR”을 사용하여 jar 파일을 추가하더라도 Hive 쉘에서 쿼리를 실행하는 동안 Filenotfound 예외가 발생 함 (0) | 2019.08.12 |
---|---|
[HADOOP] 프로그램에서 스파크 작업 상태를 얻는 방법? (0) | 2019.08.12 |
[HADOOP] 테이블 백분위 수의 임의 샘플을 반환하기 위해 Accumulo 반복자를 작성하는 중입니다. (0) | 2019.08.12 |
[HADOOP] Log4j가 HDFS / Log4j.properties에 쓰지 않음 (0) | 2019.08.12 |
[HADOOP] hadoop 기반 데이터 파이프 라인 구축을위한 스케줄링 도구 제안 (0) | 2019.08.12 |