2016-07-12 2 views
0

파일이 50MB이고 기본 HDFS 블록 크기가 64MB라고 가정합니다. 따라서이 50MB 파일을 저장 한 후에는 다른 파일을 저장하는 데 사용할 수있는 14MB의 블록 크기가 남습니다. 이제 namenode는 HDFS에있는 파일의 블록 정보를 추적합니다. 따라서이 경우 동일한 블록을 가리키는 2 개의 레코드가 있습니다. 하나는 50MB 파일 용이고 다른 하나는 14MB 파일 용입니다.네임 노드 블록 관리

제 질문은 namenode가이 두 레코드를 추적하고 두 파일이 같은 블록을 가리키고있어 파일에 대한 메타 데이터 정보를 제공하는 방법입니다.

답변

1

블록 당 여러 개의 파일을 가지고 있다고 가정합니다. 하나의 블록은 하나의 파일 만 저장할 수 있지만 하나의 파일을 여러 블록에 저장할 수 있습니다 (크기가 블록의 크기보다 큰 경우). 따라서 네임 노드는 블록 당 최대 하나의 파일 만 매핑합니다.

디스크 공간은 실제 파일 크기에만 사용되며 전체 블록 크기에는 사용되지 않으므로 많은 작은 파일을 사용하면 네임 노드의 메모리에 영향을 미칠 수 있습니다.

0

첫 번째 파일은 입력 된 분할에 따라 저장되는 블록 크기에 따라 저장되지 않습니다. 파일은 논리적으로 입력 분할이라고하는 작은 부분으로 나뉘어져 블록으로 저장됩니다.

둘째 예 블록 당 1 개 이상의 파일이있을 수 있습니다. 즉, 블록에 1 개 이상의 입력 분할이있는 경우가있을 수 있습니다. 이러한 분할에는 응용 프로그램 마스터가 해당 노드를 추적하여 이름 노드를 업데이트하는 데 도움이되는 EOL (end of line)이라는 항목이 있습니다.

자세한 내용은 https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/ 을 참조하십시오. 그러면 모든 의문점이 해결됩니다.