hadoop集群中的数据复制

时间:2015-09-03 16:55:45

标签: hadoop

我是初学者,学习Hadoop。来自同一文件的2个不同数据块是否可能存储在同一个数据节点中?例如:文件" file.txt"中的blk-A和blk-B;可以放在同一个数据节点(datanode 1)中。

2 个答案:

答案 0 :(得分:1)

Here是解释块放置策略的文档。目前,HDFS复制默认为3,这意味着一个块有3个副本。它们的放置方式是:

  1. 将一个块放在唯一机架上的datanode上。
  2. 第二个块放在另一个机架上的datanode上。
  3. 第三个块放在同一个机架上的不同datanode上 第二块。
  4. 当datanode死机,块损坏等事件时,此策略会有所帮助。

      

    有可能吗?

    除非您在源代码中进行更改,否则您无法更改任何可以在同一个datanode上放置两个块的属性。

    我的观点是在同一个数据节点上放置两个块可以胜过HDFS的目的。块被复制,因此HDFS可以出于上述原因进行恢复。如果块放在同一个datanode上并且datanode已经死了,那么你将失去两个块而不是一个。

答案 1 :(得分:0)

答案取决于群集拓扑。 Hadoop尝试在数据中心和数据节点之间分发数据。但是,如果您只有一个数据中心怎么办?或者如果您只有一个节点集群(伪集群)。在这些情况下,不会发生最佳分布,并且所有块都可能在同一数据节点中结束。在生产中,建议有多个数据中心(物理上,不仅在配置中),并且至少具有与复制号相同数量的数据节点。