Namenode块管理

时间:2016-07-12 16:24:21

标签: hadoop hdfs namenode

假设我有一个50mb的文件,我的默认HDFS块大小是64mb。所以在存储这个50mb文件之后,我们剩下14mb的块大小,可以用来存储其他文件。 现在,namenode会跟踪HDFS中存在的文件的块信息。因此,在这种情况下,将有2个记录指向同一个块,一个用于50mb文件,一个用于14mb文件。

我的问题是namenode如何跟踪这2条记录并提供有关文件的元数据信息,因为2个文件将指向同一个区块。

2 个答案:

答案 0 :(得分:1)

假设每个块有多个文件,你错了。一个块只能存储一个文件,但是一个文件可以存储在多个块上(如果它的大小大于块的大小)。因此,Namenode每个块最多只映射一个文件。

请注意,磁盘空间将仅用于实际文件大小而不是整个块大小,这就是为什么有许多小文件可能会影响Namenode的内存。

答案 1 :(得分:0)

根据输入分割存储的块大小,不存储第一个文件。文件在逻辑上被划分为称为输入拆分的较小部分,然后将这些部分保存在块中。

第二个是每个块可以有多于1个文件,这意味着可能存在块中存在多于1个输入分割的情况。  这些拆分有一个名为EOL(行尾)的东西,它可以帮助应用程序主机跟踪它们,从而更新名称节点。

有关详细信息,请参阅https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/ 这将清除你所有的疑问。