hadoop中的java块池

u7up0aaq  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(337)

我正在学习hadoop教程,我对hadoop中的块池没有任何疑问。
块池—基本上每个块池都是相互独立管理的,每个块池都是属于单个命名空间的一组块。
块池是虚拟概念,还是类似于内存中维护的块上的metadat?

zy1mlcev

zy1mlcev1#

块池拥有关于hadoop集群中每个块和每个文件的数据的信息。块池将每个块的元数据存储在内存中,以便更快地访问而不是存储在磁盘上。众所周知,hadoop将每个文件划分为块序列,并将它们存储在不同的数据节点上。每个块都有一定的大小,即在hadoop1中,块大小是64mb,而在hadoop2中,我们使用的块大小是128mb。如果namenode在某个操作中关闭或失败,则hadoop集群中的用户或管理员将无法获得全部信息。
在hadoop中块池在哪里使用?
hadoop联邦使用多个名称空间的概念。名称空间由不同的namenodes维护。
考虑在管理、开发和其他领域的组织中维护数据的场景。所以我们有一个或多个namenodes来监视用户所做的操作。
在本例中,hadoop集群中有两个namenode。
第一个namenode表示nn1处理/administration命名空间下的所有文件,即管理帐户的所有数据。
类似地,第二个namenode表示nn2处理开发中/开发中的开发帐户的所有数据。
因此,为了查看管理帐户下所有文件的块,只需要nn1就可以查看/administration namespace的块池。要查看正在开发的文件,我们只需要nn2。所以这两个区块池是相互独立的。因此,他们独立地作出React。
我希望所有阅读这个问题的人都能清楚地理解这些概念。

zed5wv10

zed5wv102#

它是关于每个数据块的元数据。
hadoop中的文件被划分成块,然后这些块被存储在不同的数据节点上。但要再次访问这些数据,我们需要知道这些块存储在哪里。namenode在块池的帮助下完成这项工作。
因此,块池是hadoop集群上每个文件的每个块的元数据。它们存储在namenode的内存中,而不是磁盘上。因此,如果namenode关闭,则需要重建此信息。
现在在hadoop联邦中,我们有了多个名称空间的概念。不同的名称节点负责不同的名称空间。假设我们有两台机器作为名称节点:
first namenode(nn1)处理namespace/finance下的所有文件,即财务部门的所有数据。
类似地,第二个namenode(nn2)在namespace/accounts下处理accounts部门的数据。
现在要管理/finance名称空间下的文件块,只需要nn1。因此,只有nn1需要/finance命名空间的块池。类似地,要了解/帐户下的文件,我们只需要nn2。只有nn2将具有/accounts命名空间的块池。因此他们独立行动。

相关问题