我正在阅读Hadoop教程,我对hadoop中的Block pool产生了疑问。
块池 - 基本上每个块池彼此独立管理,每个块都是一组属于单个命名空间的块。
该块池是虚拟概念还是类似于内存中维护的块上的metadat?
答案 0 :(得分:6)
关于每个数据块的元数据。
hadoop中的文件被分成块,然后这些块存储在不同的数据节点上。 但要再次访问此数据,我们需要知道这些块的存储位置。 namenode在块池的帮助下完成了这个任务。
因此,Blockpool是关于hadoop集群上每个文件的每个块的元数据。它们存储在namenode的内存中,而不是存储在磁盘上。因此,如果namenode关闭,则需要重建此信息。现在在Hadoop Federation中,我们有多个命名空间的概念。不同的名称节点负责不同的名称空间。假设我们有两台机器充当名称节点:
现在要管理/ finance命名空间下的文件块,只需要NN1。因此,只有NN1需要具有/ finance命名空间的块池。同样了解/ accounts下的文件,我们只需要NN2。只有NN2会有/ pool命名空间的块池。因此他们独立行动。
答案 1 :(得分:1)
块池具有有关Hadoop群集中每个块和每个文件数据的信息。块池将有关每个块的元数据存储在内存中,以实现不在磁盘上的更快访问。众所周知,Hadoop将每个文件划分为块序列,并将它们存储在不同的数据节点上。每个块都有确定的大小,即在Hadoop 1中块大小为64 MB,在Hadoop 2中我们使用块大小为128 MB。如果namenode关闭或操作失败,则hadoop群集中的用户或管理员无法获得全部信息。
在Hadoop中块池在哪里使用?
Hadoop联合会使用多个名称空间的概念。命名空间由不同的名称节点维护。
请考虑在管理,开发和其他域的组织中维护数据的方案。因此,我们有一个或多个名称节点来监视用户执行的操作。
在这种情况下,我们在hadoop集群中有两个namenode。
第一个Namenode节点说NN1处理/ Administration命名空间下的所有文件,即管理帐户的所有数据。
类似地,Second Namenode说NN2处理/ Development下的Development帐户的所有数据。
因此,为了查看管理帐户下所有文件的块,仅需要NN1即可查看/ Administration命名空间的块池。要查看/ Development下的文件,我们只需要NN2。因此,这两个块池彼此独立。因此,他们可以独立做出响应。
我希望所有阅读此问题的人都清楚理解这些概念。