大数据平台运维------HDFS balancer的使用
2018-03-18 17:07
351 查看
1. 背景
Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,比如集群中添加新的数据节点。当HDFS出现不平衡状况的时候,将引发很多问题,比如MR程序无法很好地利用本地计算的优势,机器之间无法达到更好的网络带宽使用率,机器磁盘无法利用等等。可见,保证HDFS中的数据平衡是非常重要的。在Hadoop中,包含一个Balancer程序,通过运行这个程序,可以使得HDFS集群达到一个平衡的状态。
2. HDFS balancer配置(可通过CM配置)
dfs.datanode.balance.max.concurrent.moves | 并行移动的block数量,默认5 |
dfs.datanode.balance.bandwidthPerSec | Balance工具所占用的带宽,默认1048576(1MB) |
dfs.balancer.moverThreads | 用于执行block移动的线程池大小,默认1000 |
dfs.balancer.max-size-to-move | 每次balance进行迭代的过程最大移动数据量,默认10737418240(10GB) |
dfs.balancer.getBlocks.size | 获取block的数量,默认2147483648(2GB) |
dfs.balancer.getBlocks.minblock-size | 用来平衡的最小block大小,默认10485760(10MB) |
dfs.datanode.blockpinning.enabled | 默认false |
3. 通过命令行使用balancer
hdfs balancer [-threshold <threshold>] [-policy <policy>] [-exclude [-f <hosts-file> | <comma-separated list of hosts>]] [-include [-f <hosts-file> | <comma-separated list of hosts>]] [-idleiterations <idleiterations>] |
-threshold | 某datanode的使用率和整个集群使用率的百分比差值阈值,达到这个阈值就启动hdfs balancer,取值从1到100,不宜太小,因为在平衡过程中也有数据写入,太小无法达到平衡 |
-policy | 分为blockpool和datanode,前者是block pool级别的平衡后者是datanode级别的平衡 |
-exclude | 不为空,则不在这些机器上进行平衡 |
-include | 不为空,则仅在这些机器上进行平衡 |
-idleiterations | 最大迭代次数 |
4. 集群平衡算法
4.1. 按使用情况分类
根据各datanode的使用情况,将集群中的节点分为:4.2. 按使用情况配对
过度使用--过度闲置过度使用--平均值下
平均值上--过度闲置
4.3. 找到待移动的block
源datanode的存储类型和目的datanode的存储类型一致该block的副本未被安排
目的datanode不包含同样的副本
移动之后该机架上的block不会减少
4.4. 移动block
调用DataTransferProtocol .replaceBlock(..) 来移动,直到返回0,代表平衡完成相关文章推荐
- 漫漫运维路——使用NFS构建出共享存储的LAMP平台,实现Wordpress论坛的数据同步 推荐
- Poseidon 系统是一个日志搜索平台——认证看链接ppt,本质是索引的倒排列表和原始日志数据都存在HDFS,而文档和倒排的元数据都在NOSQL里,同时针对单个filed都使用了独立索引,使用MR来索引和搜索
- 在.NET平台下使用SQL2000 Image类型数据
- c 使用libhdfs写数据 配置blocksize
- HDFS-RAID使用Erasure Code来实现HDFS的数据冗余
- [zZ]HDFS-RAID使用Erasure Code来实现HDFS的数据冗余
- 如何在.net平台合理安全的使用Named Shared Memory以在进程间共享数据
- 使用AWS搭建高度伸缩的数据分析平台
- 大数据虚拟化零起点-6基础运维第五步-使用CLI创建Apache Hadoop集群 推荐
- 使用oracle的大数据工具ODCH访问HDFS数据文件
- 使用sqoop将mysql数据导入到hdfs
- 运维平台化之IDC机柜拓扑及数据展现实现思路 推荐
- 多线程、多平台环境中的跟踪 - 使用 log4j 和 UNIX 命令来挖掘跟踪数据
- 使用sqoop将oracle数据导入hdfs集群
- 在.NET平台下使用SQL2000 Image类型数据
- Imode平台下使用原生数据创建3D模型_旋转
- 基础平台数据导入(游标的使用)
- 解决在OFFICE平台传输数据慢的问题,使用GZIP+JSON替代WEBSERVICE提供数据
- 在.NET平台下使用SQL2000 Image类型数据