关于Hadoop HDFS数据均衡。
2016-03-03 16:38
375 查看
在hadoop集群中,当有新节点增加或者删除原有节点时,如果不启用数据均衡服务(负载均衡),则会造成数据在集群中分布不均匀。由此而带来的问题是无法有效的利用MR本地化计算的优势,通俗来说就是A节点上运行的map任务所需数据不在A节点上,在B节点上。这就避免不了跨节点进行数据读取,造成了网络带宽的不必要消耗。为了解决这样的问题,引入数据均衡机制,也就是使用该服务达到集群中数据的均匀分布的目的。但是在达到该目的的过程中,需要遵循如下原则而不至于给原有集群带来不必要的麻烦:
1.原有数据块不会减少
2.可随时终止该服务
3.数据移动不能占用过多的资源
4.不能够影响namenode的工作
均衡负载原理图:
![](http://img.blog.csdn.net/20160303161040657?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
大致过程为:
1.数据均衡服务要求namenode根据集群中datanode的数据分布做汇总。
2.根据该汇总情况形成数据块迁移路线图。
3.开始数据块迁移任务
4.迁移完成,通知namenode删除原有数据块。
实际应用中可能需要每天定时做一次数据均衡,在crontab中定时执行start-balancer.sh命令,当然还可以随时终止stop-balancer.sh.
start-balancer.sh中可使用参数 -t 如start-balancer.sh -t 5%,默认10%。该参数的意思是集群中各节点的hdfs磁盘使用率和集群中总的hdfs磁盘使用率的差值都应该小于该参数值,就达到了数据均衡,越小表明集群中的数据越均衡。在数据库迁移的过程中,还可以设置其移动的速度在hdfs-site.xml中设置(需重启hdfs服务)
该值越大意味着数据均衡完成的速度越快,但要同时考虑到MR的任务运行不会受到影响,在实际应用中由于对文件不断的进行读写操作,可能无法达到设定的阀值。另一方尽量保持集群中各个节点的磁盘容量一致。
参考文章:http://www.ibm.com/developerworks/cn/data/library/bd-1506-hdfsdatabalance/index.html
http://www.aboutyun.com/thread-7354-1-1.html
1.原有数据块不会减少
2.可随时终止该服务
3.数据移动不能占用过多的资源
4.不能够影响namenode的工作
均衡负载原理图:
大致过程为:
1.数据均衡服务要求namenode根据集群中datanode的数据分布做汇总。
2.根据该汇总情况形成数据块迁移路线图。
3.开始数据块迁移任务
4.迁移完成,通知namenode删除原有数据块。
实际应用中可能需要每天定时做一次数据均衡,在crontab中定时执行start-balancer.sh命令,当然还可以随时终止stop-balancer.sh.
start-balancer.sh中可使用参数 -t 如start-balancer.sh -t 5%,默认10%。该参数的意思是集群中各节点的hdfs磁盘使用率和集群中总的hdfs磁盘使用率的差值都应该小于该参数值,就达到了数据均衡,越小表明集群中的数据越均衡。在数据库迁移的过程中,还可以设置其移动的速度在hdfs-site.xml中设置(需重启hdfs服务)
<property> <name>dfs.balance.bandwidthPerSec</name> <value>1048576</value> =>1M/s </property></span>
该值越大意味着数据均衡完成的速度越快,但要同时考虑到MR的任务运行不会受到影响,在实际应用中由于对文件不断的进行读写操作,可能无法达到设定的阀值。另一方尽量保持集群中各个节点的磁盘容量一致。
参考文章:http://www.ibm.com/developerworks/cn/data/library/bd-1506-hdfsdatabalance/index.html
http://www.aboutyun.com/thread-7354-1-1.html
相关文章推荐
- shell变量的组合变量
- 王垠:完全用Linux工作
- 王垠:完全用Linux工作
- PHP网站在Linux服务器上面的安全配置
- 一种更清晰的Android架构
- wordpress网站从本地上传到阿里云服务器
- Linux下搭建Bouncycastle环境
- 【opencv学习笔记】SetImageROI函数设置ROI区域的作用及用法
- Dockerfile构建镜像与部署
- Dockerfile构建镜像与部署
- Linux-tar命令
- make的-j命令(加速Linux程序编译)
- 老男孩教育学习linux决心书
- zabbix安装,关闭SELinux
- CORS其实很简单:NGINX 一招搞定针对特定域名和端口跨域,动态决定跨域到哪里
- tomcat里允许访问软连接(symbol link)的设置
- Lucene.Net 全文检索引擎的架构
- 58同城扩展性架构实践的总结
- docker新建自定义网桥,实现不同主机容器互联
- docker新建自定义网桥,实现不同主机容器互联