namenode块管理

omjgkv6w  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(285)

假设我有一个50mb的文件,我的默认hdfs块大小是64mb。所以在存储了50mb的文件之后,我们剩下14mb的块大小,可以用来存储其他文件。现在namenode跟踪hdfs中存在的文件的块信息。因此在本例中,将有两条记录指向同一块,一条用于50mb文件,另一条用于14mb文件。
我的问题是namenode如何跟踪这两个记录并提供关于文件的元数据信息,因为这两个文件将指向同一个块。

7gyucuyw

7gyucuyw1#

首先,文件不是根据块大小存储的,而是根据输入拆分存储的。文件在逻辑上被分成更小的部分,称为输入分割,然后这些被保存在块中。
第二,是的,每个块可以有一个以上的文件,这意味着在一个块中可能存在一个以上的输入分割。这些拆分有一个名为eol(end-of-line)的东西,它帮助应用程序主控程序跟踪它们,从而更新名称节点。
有关更多详细信息,请参阅https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/ 这会消除你所有的疑虑。

oxf4rvwz

oxf4rvwz2#

假设每个块有几个文件是错误的。一个块只能存储一个文件,但一个文件可以存储在多个块上(如果它的大小大于块的大小)。所以namenode最多只能Map一个文件。
请注意,磁盘空间将仅用于实际文件大小,而不用于整个块大小,这就是为什么有许多小文件可能会影响namenode的内存。

相关问题