浅谈hadoop(四)——hadoop简介

21 篇文章 1 订阅

浅谈hadoop(四)——hadoop简介

本文翻译素材来自hadoop官网:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Data_Replication

Replica Placement: The First Baby Steps

        副本存储对于hadoop的可用性和性能很重要。正是这种最优化的副本存储方式把hadoop和其他的分布式框架区分开来。副本存储需要丰富的经验和调整。机架-感知副本存储策略的目的是为了提高可靠性和可用性,同时优化网络带宽。当前已经实现的副本存储策略是在这个方向上的第一步,通过在生产环境中使用这种策略能够更加了解这种策略的表现,从而得到丰富的测试集,为更加复杂的策略做铺垫。
        一个大的hdfs分布式集群一般都会跨多个机架。位于两个不同机架的节点通信必须通过一层或多层交换机。通常,在同一机架内部的节点间的带宽要比在不同机架节点间的带宽要高。
        hadoop通过外部的hadoop机架感知决定哪个节点属于哪个机架。一个简单的策略是把副本放在单独的机架,但是这种策略不是最优的。这种策略能够防止由于机架发生错误而丢失数据。在读取数据时,这种策略能够通过不同的机架读取数据。当组件错误是,这种策略甚至通过分配副本在集群中的位置进行平衡负载。但是,这种策略增加了写的开销,因为需要把块传输到不同的机架中。
        一个常见的情况是这样的:在集群的副本因子是3,一个副本被放在当前机架的当前节点,另一个副本被放在当前机架的不同节点,最后一个放在不同机架的不同节点。这种策略减少了机架间的通信,从而提高性能。机架发生错误的概率比节点发生错误的概率要低。这种策略没有影响数据的可用性和可靠性。不过,由于数据存在于2个机架而不是3个,这种策略确实减少了由于某个节点故障而增加的网络带宽。采用这样的策略,一个文件不需要分布在多个机架中。三个副本,一个在同一节点,另一个再同一机架,还有一个在集群中的一个可用机架中。这种策略在没有降低数据可靠性和读性能的同时增加了写性能。
        如果副本因子大于3,那么第四个副本会被随机的存储到其他的机架中,同时需要保证每个机架中的副本数小于如下的公式:(副本数 - 1) / 机架数+ 2
        由于namenode不允许datanodes保存一个块的多个副本,所以副本的最大数就是datanodes的个数。
在存储类型和存储策略加入到hdfs中以后,namenode就会采用上面介绍的机架感知策略。namenode首先根据机架感知申请存储副本的节点是否满足要求,如果不符合,那么namenode会继续寻找下一个节点。如果没有节点满足需求,那么就会保存副本在二级目录中。

Replica Selection

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

Safemode

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值