设为首页 收藏本站
查看: 1495|回复: 0

[经验分享] Hadoop:Rack Awareness

[复制链接]

尚未签到

发表于 2017-12-17 10:39:29 | 显示全部楼层 |阅读模式

  副本的放置对HDFS可靠性和性能至关重要。 优化副本放置HDFS有别于其他大多数分布式文件系统。 这是一个功能,需要大量的调优和经验。 基于机架感知(rack awareness)的副本放置策略的目的是为了提高数据可靠性、可用性和网络带宽的利用率。 当前实现的副本放置策略是第一次在这个方向上努力。 实施这一政策的短期目标是验证在生产系统中,了解更多关于它的行为,建立一个测试和研究更复杂的政策基础。

  大型HDFS实例运行在集群的计算机通常分布在许多机架上。 在不同机架上的两个节点之间的通信必须经过交换机。 在大多数情况下,同一机架内的机器之间的网络带宽大于不同的机架之间机器的网络带宽。

  一个简单但没有优化的策略就是将副本存放在单独的机架上。 这可以防止在整个架失败时数据的丢失,允许从多个机架上读取数据。 这一策略将副本分布在集群中,便于组件的负载平衡失败。 然而,这一策略增加了写的代价,因为一个写操作需要传输block到多个机架。所以Hadoop并没有采用该策略。
  NameNode决定每个DataNode所属的机架ID是通过中rack awareness策略。 Hadoop 设计 rack awareness策略 的初衷:
  1)希望不同节点之间的通信能够尽量发生在同一个机架之内,而不是跨机架。
        2)为了提高容错能力,namenode会尽可能把block的replica放到多个rack上。


      基于rack awareness的replica分配算法 :

            

           1)当一个新的数据块被创建的时候,遵循以下规则:

               -- 第1个副本放置于本地节点

               -- 第2个副本放置于不同的机架

               -- 第3个副本放置于本地机架的不同节点

               -- 其余的副本在遵循以下限制的前提下随机放置

                   -- 1个节点最多放置1个副本     

                   -- 如果副本数少于2倍机架数,不可以在同一机架放置超过2个副本

                 2)当重新复制一个数据块的时候,遵循以下规则:

                     -- 如果已有1个副本,把第2个副本放置在不同的机架

  -- 如果已有2个副本且处于同一机架,把第3个副本放置在不同的机架
  -- 如果已有2个副本但不处于同一机架,把第3个副本放置在和第1个副本相同的机架
  -- 当可用副本数超过2个的时候,随机放置
上面所说的随机,其实每个机架上副本的数量低于上限(这个上限基本上是 (replicas - 1)/rack + 2 )。

  

  通常情况下, 设置复制因子3。根据HDFS的分配策略,会将2个副本在一个机架内的2个datanode上,另一个放在不同的机架上的。 这一策略削减机架间写交通通常提高了写性能。 机架失败的概率远低于节点失败的概率,这一政策不会影响数据的可靠性和可用性保证。 然而,它确实减少读取数据时网络带宽使用(因为一块放置在只有两个单独的架,而不是三个)。使用 这一策略时,文件的副本不均匀地分布在机架(三分之一的副本在一个节点上,三分之二的副本是一个架子上,和其他第三均匀分布在剩余的机架)。 这个策略在不影响数据的可靠性的前提下提高了写性能、读取性能。

  此外:NameNode不允许datanode有多个副本相同的块,最大数量的副本创建datanode的总数。

机架上各个datanode之间的距离的计算:


机架拓扑:

DSC0000.png


H1..H12 ,H是Host的缩写。就是代表各个机器。通常情况下,一个机器上分配一个datanode。

R1..R4 ,R是Rack的缩写。就是代表机架。通常一个rack上都 有一个交换机。


DSC0001.png

  根据上面所说,每个 node 与父节点的距离是1,那么:
  

distance(/D1/R1/H1,/D1/R1/H1)=0  相同的datanode  
distance(/D1/R1/H1,/D1/R1/H2)=2  同一rack下的不同datanode
  
distance(/D1/R1/H1,/D1/R1/H4)=4  同一IDC下的不同datanode
  
distance(/D1/R1/H1,/D2/R3/H7)=6  不同IDC下的datanode
  机架的选择
  为了减少整体带宽消耗和读延迟,当读取数据时,HDFS 会尽可能的从最接近reader的副本读取。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424962-1-1.html 上篇帖子: 构建高可靠hadoop集群之0-hadoop用户向导 下篇帖子: Apache Hadoop 和Hadoop生态圈
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表