hadoop中的块池

Block pool in hadoop

我正在学习 Hadoop 教程,我对 hadoop 中的块池有疑问。

块池——基本上每个块池都是独立管理的,每个块池都是属于一个命名空间的一组块。

块池是虚拟概念还是类似于块上的 metadat 在内存中维护?

它是每个数据块的元数据

hadoop中的文件被分成块,然后这些块存储在不同的数据节点上。 但是要再次访问这些数据,我们需要知道这些块存储在哪里。名称节点在块池的帮助下完成这件事。

因此,块池是关于 hadoop 集群上每个文件的每个块的元数据。它们存储在名称节点的内存中,而不是磁盘上。所以如果namenode关闭了,这个信息需要重建。

现在在Hadoop Federation中,我们有了多命名空间的概念。不同的名称节点负责不同的命名空间。假设我们有两台机器充当名称节点:

  1. Fist namenode(NN1)处理命名空间/finance下的所有文件,即财务部门的所有数据。
  2. 同样第二个namenode(NN2)处理命名空间/accounts下会计部门的数据。

现在管理/finance命名空间下的文件块,只需要NN1。因此只有 NN1 需要拥有 /finance 命名空间的块池。类似地,要了解 /accounts 下的文件,我们只需要 NN2。只有 NN2 会有 /accounts 命名空间的块池。因此他们独立行动。

块池包含有关每个块的信息以及 Hadoop 集群中每个文件的数据。块池将每个块的元数据存储在内存中,以便更快地访问而不是在磁盘上。众所周知,Hadoop 将每个文件划分为块序列,并将它们存储在不同的数据节点上。每个块都有确定的大小,即在 Hadoop 1 中,块大小为 64 MB,在 Hadoop 2 中,我们使用的块大小为 128 MB。如果名称节点关闭或操作失败,则整个信息对 hadoop 集群中的用户或管理员不可用。

块池在 Hadoop 中的什么地方使用?

Hadoop Federation 使用多个名称空间的概念。命名空间由不同的名称节点维护。

考虑在管理、开发和其他领域的组织中维护数据的场景。所以我们有一个或多个名称节点来监控用户所做的操作。

在这种情况下,我们在 hadoop 集群中有两个名称节点。

First Namenode 说 NN1 处理所有在 /Administration 命名空间下的文件,即管理帐户的所有数据。

同样,Second Namenode 说 NN2 处理 /Development 下的 Development 帐户的所有数据。

因此,为了查看管理帐户下所有文件的块,只需要NN1 来查看/Administration 命名空间的块池。要查看 /Development 下的文件,我们只需要 NN2。所以这两个块池是相互独立的。因此他们独立回应。

我希望所有阅读该问题的人都能清楚地理解这些概念。