我正在阅读Hadoop教程,我对hadoop中的块池毫无疑问。
块池-基本上每个块池都是相互独立管理的,每个块池都是一组属于单个 namespace 的块。
那块池是虚拟概念吗?还是像metadat在内存中维护的块一样?
最佳答案
它是关于数据的每个数据块的元数据。
hadoop中的文件分为多个块,然后将这些块存储在不同的数据节点上。但是要再次访问此数据,我们需要知道这些块的存储位置。 namenode在块池的帮助下完成了此任务。
因此,块池是有关hadoop群集上每个文件的每个块的元数据。它们存储在名称节点的内存中,而不是磁盘上。因此,如果namenode关闭,则需要重建此信息。
现在,在Hadoop Federation中,我们有了多个 namespace 的概念。不同的名称节点负责不同的 namespace 。假设我们有两台充当namenode的机器:
现在,要管理/ finance命名空间下的文件块,只需要NN1。因此,只有NN1需要具有/ finance命名空间的块池。同样,要了解/ accounts下的文件,我们只需要NN2。仅NN2将具有/ accounts namespace 的块池。因此,他们独立行动。