HDFS副本放置策略

时间:2020-01-09 10:34:31  来源:igfitidea点击:

根据Hadoop中的副本放置策略,每个HDFS块都在不同的节点之间复制。默认复制因子为3,这意味着默认情况下,每个HDFS块都在三个不同的节点上复制,以使HDFS可靠且具有容错能力。

HDFS副本放置策略的注意事项

复制块时,应考虑以下几点:

  • 大型HDFS实例在通常分布在许多机架上的计算机群集上运行。不同机架中的两个节点之间的通信必须通过交换机进行。
  • 在大多数情况下,同一机架中的计算机之间的网络带宽大于不同机架中的计算机之间的网络带宽。
  • 将所有副本放置在相同的节点(客户端所在的节点)上将提供最快的访问权限,但用处不大,因为如果节点发生故障,所有副本都会丢失。

HDFS复制品放置策略

考虑到以上几点,

  • 机架间通信必须通过交换机进行,这意味着要花费更多时间。
  • 将块副本保留在客户端所在的位置意味着最快的访问速度。

Hadoop框架使用了rake感知副本放置策略,其中所有这些点都被赋予了重要性。

对于默认情况下的复制因子为3,Hadoop的副本放置策略如下-

  • 将一个副本放在客户端所在的节点上。如果客户端不在群集中,则将随机选择节点。
  • 另一个副本放置在不同(远程)机架中的节点上。
  • 第三副本也与第二副本放置在同一机架中,但是节点是不同的,是随机选择的。

如果复制因子大于3,则将随机确定第4个及以下副本的位置,同时将每个机架的副本数量保持在上限以下(基本上是(副本– 1)/机架+ 2)。

对于3的复制因子,HDFS复制副本的放置可能类似于给定的数字。

为了将块复制到Datanodes,HDFS使用流水线。客户端从Namenode获取数据节点列表后,客户端将块数据流式传输到第一个Datanode,该Datanode将数据复制到下一个Datanode,依此类推,以获取配置的复制因子。

参考:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Replica_Selection