浅谈hadoop(四)——hadoop简介




Replica Placement: The First Baby Steps



        副本存储对于hadoop的可用性和性能很重要。正是这种最优化的副本存储方式把hadoop和其他的分布式框架区分开来。副本存储需要丰富的经验和调整。机架-感知副本存储策略的目的是为了提高可靠性和可用性,同时优化网络带宽。当前已经实现的副本存储策略是在这个方向上的第一步,通过在生产环境中使用这种策略能够更加了解这种策略的表现,从而得到丰富的测试集,为更加复杂的策略做铺垫。





        如果副本因子大于3,那么第四个副本会被随机的存储到其他的机架中,同时需要保证每个机架中的副本数小于如下的公式:(副本数 - 1) / 机架数+ 2


在存储类型和存储策略加入到hdfs中以后,namenode就会采用上面介绍的机架感知策略。namenode首先根据机架感知申请存储副本的节点是否满足要求,如果不符合,那么namenode会继续寻找下一个节点。如果没有节点满足需求,那么就会保存副本在二级目录中。


Replica Selection

       

为了最小化全局的带宽消耗和读延迟,hdfs响应一个读请求时,返回的是离发出者最近的副本。如果有个读节点在同一机架上的副本,那么会用这个副本进行读响应。如果hdfs有多个数据中心,那么位于本地数据中心的副本会被优先作为读请求的响应。

Safemode

       

启动时,namenode进入了一种特殊的模式,叫做安全模式。当hdfs的namenode在安全模式的时候,数据块的副本还不存在,namenode从datanodes得到heartbeat和blockreport信息。blockreport包含当前datanode中可用的数据块的列表。每个块都有一个被指定的副本个数。当块的副本在namenode检查通过,这个块才被认为是安全的复制了。当namenode检查了一定百分比(可以配置)的块之后(通常是30多秒),namenode退出安全模式。这时,如果还有块的副本数小于指定的副本数,那么namenode就开始给这些块制作副本并且保存在datanode上。