2017-10-26 4 views
1

제 질문은 공간이 분리 된 100 단어의 텍스트 파일이 있고 단어 개수 프로그램을 수행해야한다는 것입니다.Hadoop Mapreduce HDFS 블록 분할

내 이름 노드가 파일을 HDFS 블록으로 분할하면 어떻게 분할이 단어 끝에 만 이루어질 수 있습니까?

예를 들어 텍스트 파일에서 50 번째 단어가 Hadoop 인 경우 64MB 블록으로 분할하는 경우 현재 블록의 저장소가 Hadoop 단어의 중심에서 64MB에 도달 할 수 있으며 따라서 한 블록에 ' had '과 다른'oop '은 다른 블록에 있습니다.

죄송합니다. 어리석은 질문 일지 모르지만 답을 제공해주십시오. 감사합니다.

답변

1

이 질문에 대한 답변은 inputsplit입니다.

마찬가지로 HDFS는 파일의 내용을 알지 못합니다. 데이터를 여러 블록에 저장하는 동안 각 블록의 마지막 레코드가 손상 될 수 있습니다. 레코드의 첫 번째 부분은 한 블록에있을 수 있으며 같은 레코드의 마지막 부분은 다른 블록에있을 수 있습니다.

블록에서 이러한 유형의 문제를 해결하기 위해 MapReduce는 입력 분할 개념을 사용합니다.

'블록'은 128MB 크기의 데이터를 여러 데이터 노드에 분산시키는 것 외에는 아무것도 아니지만 '입력 분할'은 데이터의 논리적 구분입니다.

MapReduce 프로그램을 실행하는 동안 매퍼의 수는 입력 분할 수에 따라 달라지며 입력 분할을 처리하는 동안 끊어진 레코드가 포함 된 다음 블록의 위치가 포함됩니다.

위의 다이어그램은 3 개의 HDFS 블록이 있고 Block-1 데이터의 마지막 부분이 블록 -2에 저장되었음을 보여줍니다. 이 경우 입력 분할은 차단 된 레코드를 검색하기 위해 Block-2의 위치를 ​​가져옵니다.

hadoopchannel