我正在学习Hadoop教程,对Hadoop中的块池没有任何疑问。
块池-基本上每个块池都是独立管理的,每个块池是属于单个命名空间的一组块
这个块池是虚拟概念,还是类似于内存中维护的块上的metadat?
它是关于每个数据块的元数据。
hadoop中的文件被划分为块,然后这些块被存储在不同的数据节点上但是要再次访问这些数据,我们需要知道这些块存储在哪里。namenode在块池的帮助下完成这项工作。
因此,块池是关于hadoop集群上每个文件的每个块的元数据。它们存储在名称节点的内存中,而不是磁盘上。因此,如果namenode关闭,则需要重建此信息。
现在在HadoopFederation中,我们有了多个名称空间的概念。不同的名称节点负责不同的名称空间。假设我们有两台机器作为名称节点,如下所示:
- 第一个名称节点(NN1)处理名称空间/财务下的所有文件,即财务部门的所有数据
- 类似地,第二个名称节点(NN2)处理名称空间/帐户下的帐户部门的数据
现在要管理/finance命名空间下的文件块,只需要NN1。因此,只有NN1需要具有/finance命名空间的块池。类似地,为了了解/帐户下的文件,我们只需要NN2。只有NN2将具有/accounts命名空间的块池。因此,他们独立行动。
区块池拥有Hadoop集群中每个区块和每个文件的数据信息。块池将每个块的元数据存储在内存中,以便在不在磁盘上的情况下进行更快的访问。众所周知,Hadoop将每个文件划分为块序列,并将它们存储在不同的数据节点上。每个块都有明确的大小,即在Hadoop 1中,块大小为64MB,而在Hadoop 2中,我们使用的块大小为128MB。如果namenode关闭或操作失败,那么hadoop集群中的用户或管理员将无法获得全部信息。
Hadoop中的块池在哪里使用?
Hadoop联合会使用多个名称空间的概念。命名空间由不同的名称节点维护。
考虑在管理、开发和其他领域的组织中维护数据的场景。因此,我们有一个或多个名称节点用于监视用户所做的操作。
在本例中,我们在hadoop集群中有两个名称节点。
First Namenode表示NN1处理/Administration命名空间下的所有文件,即管理帐户的所有数据。
类似地,Second Namenode表示NN2处理/Development下Development帐户的所有数据。
因此,为了查看管理帐户下所有文件的块,只需要NN1即可查看/administration命名空间的块池。要查看/Development下的文件,我们只需要NN2。所以这两个区块池是相互独立的。因此,他们独立地作出反应。
我希望所有阅读这个问题的人都能清楚地理解这些概念。