hadoop集群中的数据复制

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

我是一个初学者学习hadoop。同一文件中的两个不同数据块是否可能存储在同一数据节点中?例如:文件“file.txt”中的blk-a和blk-b可以放在同一个数据节点(datanode 1)中。

j0pj023g

j0pj023g1#

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

9fkzdhlc

9fkzdhlc2#

以下是解释块放置策略的文档。目前,hdfs replication默认为3,这意味着一个块有3个副本。它们的放置方式是:
一个块放在唯一机架上的数据节点上。
第二个块放在不同机架上的数据节点上。
第三个数据块与第二个数据块放在同一机架上的不同数据节点上。
当发生诸如datanode死了、块损坏等事件时,此策略会有所帮助。
有可能吗?
除非您在源代码中做了更改,否则您不能更改任何属性来允许您在同一个datanode上放置两个块。
我的观点是,在同一个数据节点上放置两个块比hdfs的目的要好。块被复制,因此hdfs可以基于上述原因进行恢复。如果块被放置在同一个datanode上,并且该datanode是死的,那么您将丢失两个块而不是一个。

相关问题