一、概述
之前提到HDFS有很强的容错机制,它通过增加副本的形式,提高容错性。 某一个副本丢失以后,它可以自动恢复,一个文件块从最初的产生到最后的落盘,会经过存储类型策略的选择,在存储类型选择策略中 HDFS 会帮我们先筛选 批符合存储类型要求的存储位置列表 ,通过这些候选列表,我们还需要做进一步的筛选,HDFS 的副本放置策略主要做的事情在于副本的最终存放,位置放得好了,能提高读写性能,否则反而会起到负面的效果 之前文章提到的三副本备份策略就是其中一个副本放置策略
二、副本放置策略概念与方法
首先要先介绍什么是副本放置策略,有些文章中也会叫它副本选择策略,这源于此策略的名称: BlockPlacementPolicy 这个策略类重在副本放置 block placement ),目前在 DFS 中现有的副本放置策略类有两大继承子类,分别为 BlockPlacementPolicy-Default和BlockPlacementPolicy WithNodeGroup 我们平常提到的 副本策略用的是 BlockPlacementPolicy Default 策略 。三副本如何存放在这个策略类中得到了完美的实现BlockPlacementPolicyDefault 类中 的注释详细地解释了三个副本的存放位置
放置流程:
(1) 如果写请求方所在机器是其中 DataNo 巾,则直接存放在本地,否则随机在集群
中选择 DataNode
(2)第 2 个副本存放于不同于第 1 个副本所在的机架
(3)第 3 个副本存放于第2个副本所在的机架,但 是属于不同的节点
橙色区域表示的是写请求者,绿色区域表示一个副本 从这里可以看出, HDFS 在容错性上还是做了很多用心的设计的
三、那么HDFS在读取时如何选择副本呢?
为了最大的减少带宽和延迟,HDFS 读取文件采用就近原则,如果与客户端在同一机架上的 DataNode 上存有副本,则直接读取该副本。如果 HDFS 是跨数据中心的,则优先选择同一数据中心的副本。关于大数据入门,HDFS数据副本存放策略,以上就为大家做了简单的介绍了。HDFS的副本策略,很大程度上来说,保证了其存储的高可靠性,也为后续的数据处理环节,提供更加稳固的支持