java - hadoop中的 block 池

标签 java hadoop hdfs hadoop-yarn hadoop2

我正在阅读 Hadoop 教程,我对 hadoop 中的 block 池产生了疑问。

block 池 - 基本上每个 block 池都是相互独立管理的,每个 block 池都是属于一个命名空间的一组 block 。

block 池是虚拟概念,还是类似于 block 上的元数据,维护在内存中?

最佳答案

它是关于每个数据 block 的元数据

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

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

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

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

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

关于java - hadoop中的 block 池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28725278/

相关文章:

hadoop - 将文件从本地放到hadoop环境

unit-testing - 如何在 oozie 工作流中运行 hadoop 示例 jar?

hadoop - Namenode在硬盘和内存中存储了哪些信息?

java - 在运行时更改哈希码

java - 打印不是 7 和 2 的倍数的数字

java - 如何在 Android 中比较字符串时间和事件时间?

java - 具有迭代器错误的Reducer

hadoop - Hadoop不使用配置文件?

java - java中设置HDFS的空间配额

java - 方法参数顺序的改变能叫方法重载吗?