2014-11-06 1 views
0

파일 XYZ의 데이터 크기가 68MB라고 가정합니다. 따라서 기본 블록이 64MB 인 블록은 A - 64MB 및 B - 4MB가됩니다. B 블록에서 나머지 공간은 다른 데이터 블록으로 채워집니다.HADOOP의 마지막 데이터 블록 처리

따라서 XYZ 데이터 파일에 대한 처리가 수행되면 A 블록 B 블록 데이터가 처리됩니다. B 블록 에는 다른 파일에 대한 데이터도 들어 있으므로 B 블록의 인 경우 HADOOP는 처리 할 블록의 부분을 어떻게 알 수 있습니까?

답변

1

파일 (XYZ)이 68MB이고 블록 크기가 64MB 인 경우 데이터는 2 블록으로 분할됩니다. Block-A는 64MB의 데이터를 저장하고 Block-B는 4MB의 나머지를 저장하고 블록은 닫힙니다 (여기에는 공간 낭비가 없습니다). 다른 파일의 데이터는 Block-B에 저장되지 않습니다.

처리 중에 MapReduce는 특정 파일을 처리 할 블록을 정확히 알고 있습니다. 물론 블록을 처리하면서 레코드 경계를 파악하는 동안 MapReduce에서 고려한 입력 분할과 같은 다른 제약이 있습니다.

+0

블록 B의 경우 두 개의 청크로 다시 분할됩니다. 하나는 크기가 4MB이고 나머지 데이터는 남아 있습니다. 권리!!! – user4221591

+1

아니요, HDFS 블록은 물리적 인 Linux 파일 시스템을 둘러싼 논리적 추상화이므로 두 번째 블록은 HDFS에 4MB 논리 파일로 저장되고 해당 블록의 NameNode에는 1 메타 데이터 항목으로 저장됩니다. 그러나 후드 블록은 기술적으로 1000 개의 linux 블록 = 4MB ('4KB' ext4 블록 크기 가정)로 저장됩니다. 자세한 내용은이 [질문] (http://stackoverflow.com/questions/15062457/hdfs-block-size-vs-actual-file-size)을보십시오. – Ashrith