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

[经验分享] hadoop中的balancer-51博克

[复制链接]

尚未签到

发表于 2018-10-30 09:48:29 | 显示全部楼层 |阅读模式
  对于HDFS集群,经常长时间的运行,尤其是大量的delete操作后,集群中各个Datanode上的空间使用率可能会存在比较大的差异。
  所以需要一种机制使各个Datanode保持平衡,防止少数Datanode存储过多的文件。
  少数使用率过高的Datanode会导致对其的数据访问效率变低,并且如果该Datanode挂掉,需要更多的时间进行恢复,对集群也会造成更大的影响。
  Hadoop中已经提供了balancer的机制。
  hadoop balancer -threshold
  通过上面的命令可以是Hadoop对各个Datanode进行评估并使他们保持平衡。
  参数threshold表示的平衡的阀值,取值范围在0%到100%之间。
  该参数表示每个Datanode中空间使用率与HDFS集群总的空间使用率的差距百分比。
  假如当前集群总空间为20T,已经空间为10T,那么对于HDFS集群来说空间使用率为50%。
  当前集群有2台Datanode,每台有10T总空间。
  Datanode 1已用空间为4T,那么Datanode的空间使用率为40%
  Datanode 2已用空间为6T,那么Datanode的空间使用率为60%
  如果我设置balancer的阀值为10%,那么此时两台Datanode的使用率与HDFS的总使用率的比值均超过阀值,此时需要执行balancer。
  如果我设置balancer的阀值为50%,那么此时两台Datanode的使用率与HDFS的总使用率的比值均未超过阀值,此时不需要执行balancer。
  阀值设置的越小,那么HDFS各个Datanode的使用率越接近,整个集群也更加的平衡,但会需要消耗更多的时间和资源来达到该平衡状态。
  如果阀值设置的过小,那么对于操作非常频繁的HDFS集群,有可能永远也不会达到该阀值所指定的平衡状态。
  阀值设置的越大,那么HDFS各个Datanode的使用率差距越大,但是会较容易达到。
  在balancer的过程,hadoop会递归的把BLOCK从使用率高的Datanode转移到那些使用率低的Datanode上。
  在每次递归的过程中,单个Datanode转移或者接受的BLOCK不过超过10G或者它存储能力的阀值(根据该Datanode的总空间决定)。
  并且每次递归过程也不能执行超过20分钟。
  在每次递归过后,会更新Datanode的最新状态信息,决定下一次递归的执行。
  通过参数dfs.balance.bandwidthPerSec可以现在balancer过程所占用的网络带宽,单位为每秒字节数,默认值为1M。
  如果你的集群比较空闲或者带宽比较大,可以适当的增加该参数,来加速整个balancer过程。
  如果你的集群比较繁忙或者带宽比较小,就要调小该参数,但这个balancer过程会变得缓慢。
  对该参数的参数,只有在HDFS下次启动后才可以生效。
  整个balancer过程还是比较复杂的,首先会计算集群总的使用率,然后分别计算各个活着的Datanode结点的使用率。
  根据balancer阀值对各个Datanode进行分类,找到那些使用率过高的和使用率过低的结点。
  遍历使用率过高的结点,找到适合迁移BLOCK的目标结点,原则就是最好是同一机架,如果当前机架没有适合的才会考虑其他机架。
  把BLOCK从使用率高的结点拷贝到使用率低的结点,完成一次递归过程后重新计算使用率,判断使用需要进行下一次过程。
  整个递归过程,最多会执行5次。


运维网声明 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-628317-1-1.html 上篇帖子: Hadoop 源代码分析(二四)FSNamesystem 下篇帖子: Hadoop源代码分析(mapreduce.lib.partition/reduce/output)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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