HDFS新版本的副本存放策略

今年上半年一直忙于云南省公安厅JZ大数据治理平台的项目,已经大半年没有更新技术博客了,这篇博客算是2019年的第一篇吧。

关于HDFS副本存放策略,一直以来总是会听到和看到两种不同的观点。

今天看了Hadoop官网上关于Hadoop2.7.6与Hadoop2.8.4的技术文档,HDFS副本存放策略其实可以分为新旧两种策略。

Hadoop2.7.6及以下版本是按照旧的策略进行副本存放的,官网文档描述如下:

HDFS新版本的副本存放策略_第1张图片在常见情况下,当复制因子为3时,HDFS的放置策略是将一个副本放置在本地机架中的一个节点上,将另一个副本放置在本地机架中的另一个节点上,最后一个副本放置在不同机架中的另一个节点上。

Hadoop2.8.4及以上版本是按照新的策略进行副本存放的,官网文档描述如下:  

HDFS新版本的副本存放策略_第2张图片在常见情况下,当复制因子为3时,HDFS的放置策略是:如果写入器在数据节点上,则将一个副本放置在本地计算机上;否则,在随机数据节点上,HDFS将另一个副本放置在不同(远程)机架中的节点上的,最后一个位于同一远程机架中的其他节点上。

最后,再把新版本的副本存放策略的基本思想描述如下:

第一个副本存放Client所在的节点上(假设Client不在集群的范围内,则第一个副本存储节点是随机选取的。当然系统会不选择那些太满或者太忙的节点)

第二个副本存放在与第一个节点不同机架中的一个节点上。

第三个副本和第二个在同一个机架,随机放在不同的节点上。

如果还有很多其他的副本就随机放在集群中的各个节点上。

你可能感兴趣的:(HDFS)