distcp导致个别datanode节点数据存储严重不均衡分析
hadoop2.4生产集群已经执行一段时间了。因为大量的hadoop1.0上面的应用不断迁移过来。刚開始事hdfs这边还没有出现多少问题。随着时间的推移,近期发现个别的datanode节点上面的磁盘空间剩余严重不足。既集群数据存储严重不均衡,非常多DN节点分明还有非常多存储空间,而个别DN节点存储空间则出现严重不足的情况。
后来经过分析,发现这些空间严重不足的节点上面,都执行了distcp作业的map任务,distcp是一个纯粹拷贝数据的job。一结合hdfs数据副本分配策略一分析,最终找到了问题所在:原来是因为这些空间不足的节点因为执行了distcp作业的map任务,当数据拷贝过来之后,这些数据的第一个副本会选择当前节点作为存储节点存储,随着时间越长,这些执行distcp作业map任务的datanode节点存储的数据就越来越多,自然就出现了存储空间不均衡问题。
该问题眼下还没有好的解决的方法,临时仅仅能不定期重新启动distcopy作业。让map任务能随机的在集群其它节点启动起来。
下面是hdfs存储数据块副本时的分配策略:
HDFS块分配策略
块分配策略流程图
注:上图提到的远程机架与本地机架是相对于找到的第一个副本的目标节点来说。
一个clienta机器发起请求分配块请求,NN接收到请求后。运行例如以下块分配流程:
1) 假设a不是一个DataNode,则在集群范围内随机选择一个节点作为目标节点,否则运行以下的2,3步骤;
2) 推断a机器是否符合存储数据块的目标节点,假设符合,第一个块副本分配完成。
3)假设a机器不符合作为目标节点。则在于与a机器同机架范围内寻找。假设找到目标节点,第一个块副本分配完成;
4)假设在同一个机架内未找到符合要求的目标节点。则在集群内随机查找,找到则第一个块副本分配完成,否则未找到符合条件的块。块分配失败;
5)假设已经成功分配第一个块副本,则与a不同机架的远程机架内寻找目标节点。假设符合,第二个块副本分配完成;
6)假设在远程机架内未找到符合要求的目标节点,在与a同样的本机架寻找,假设找到则第二个块副本分配完成;否则未找到符合条件的块,第二份块分配失败;
7)假设前2个块副本分配成功。则准备分配第三个副本的目标节点,首先会推断前两份是否在同一个机架,假设是,则在远程机架寻找目标节点,找到则第三份副本分配完成。假设前两份在不同机架。则在与a同样机架内寻找,假设找到则第三份副本分配完成。否则在集群范围寻找,找到则第三份分配完成。否则第三份分配失败
8)假设块副本大于三分,则在集群范围内随机寻找节点
在上面的块分配流程图中,重复出现满足条件的节点推断,要推断一个节点是否满足条件,须要经过例如以下流程,流程图例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1aG9uZzExMjM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" style="border:none; max-width:100%">
当在一个范围内找到一个节点后。还须要经过如上的条件推断,才干确定一个DataNode进程能否够作为目标节点:
1) 假设没有节点机器被选择,则该节点能够作为备选节点,否则须要推断下一个DataNode
是否符合要求;(这样就防止同一个块副本存储到同一台机器)
2) 然后推断节点是否退役,存储空间是否足够,负载是否大于2倍平均负载。本机架选择的节点是否超过限制,假设均满足,则该datanode符合要求,否则须要推断下一个DataNode是否符合要求;
參考:
http://blog.csdn.net/liuhong1123/article/details/12949487
distcp导致个别datanode节点数据存储严重不均衡分析的更多相关文章
- 网易大数据之数据存储:HDFS
一.HDFS基础架构 1.HDFS特点:水平扩展.高容错性.廉价硬件.开源生态系统 2.Hadoop生态圈 1).分布式存储系统(HDFS),2).资源管理框架(YARN),3).批处理框架(MapR ...
- RAC节点两边存储名字不一致导致的故障及相关延伸
起因:一个客户的实际故障,该故障非常典型,其他客户类似的环境也非常多,所以很值得梳理并记录下来. 环境:Oracle 11.2.0.4 RAC(2 nodes)+ RHEL 6.6 共享存储:EMC ...
- 为datanode配置多个数据存储地
datanode配置多个数据存储地址,涉及到以下两个配置项 dfs.name.dir Determines where on the local filesystem the DFS name nod ...
- cloudrea manager 调整datanode数据存储目录
由于datanode所需磁盘空间较大,所以工作中可能会涉及到给datanode增加磁盘目录或者更改数据目录 CM停止该datanode节点 CM页面增加目录或者修改目录 如果是修改目录的话 需要将服务 ...
- zookeeper原理解析-数据存储
Zookeeper内存结构 Zookeeper是怎么存储数据的,什么机制保证集群中数据是一致性,在网络异常,当机以及停电等异常情况下恢复数据的,我们知道数据库给我们提供了这些功能,其实zookeepe ...
- Zookeeper系列六:服务器角色、序列化与通信协议、数据存储、zookeeper总结
一.服务器角色 1. Leader 1)事务请求的唯一调度者和处理者.保证事务处理的顺序性 事务请求:导致数据一致性的请求(数据发生改变).如删除一个节点.创建一个节点.设置节点数据,设置节点权限就是 ...
- Hadoop DataNode 节点的动态添加和动态删除
动态添加 DataNode 节点 hadoop环境是必须的 需要加入新的 DataNode 节点,前提是已经配置好 SSH 无密登录:直接复制已有DataNode中.ssh目录中的authorized ...
- 大数据存储:MongoDB实战指南——常见问题解答
锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...
- Hadoop第三天---分布式文件系统HDFS(大数据存储实战)
1.开机启动Hadoop,输入命令: 检查相关进程的启动情况: 2.对Hadoop集群做一个测试: 可以看到新建的test1.txt和test2.txt已经成功地拷贝到节点上(伪分布式只有一个节 ...
随机推荐
- 原生 js 整理
常见的事件 window.event 代表着,事件的状态,只有在事件的过程中才有效.
- CAD参数绘制直线(网页版)
用户可以在CAD控件视区任意位置绘制直线. 主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE ...
- vc++实现控制USB设备启用与否
#include <WINDOWS.H> #include <TCHAR.H> #include <SETUPAPI.H> //#in ...
- windows 下安装 RabbitMQ
一.安装 RabbitMQ 前需要先安装 Erlang http://www.erlang.org/downloads 下下载对应版本的安装文件进行安装. 安装完成后配置环境变量: ERLANG_HO ...
- mysql图形化工具获取表的源码
打开数据库,选择要查看的表,点击右键>对象信息>DDL:
- Bootstrap table的基础用法
一.官方文档 Bootstrap 中文网:http://www.bootcss.com/ Bootstrap Table 中文网 : http://bootstrap-table.wenzhixin. ...
- cc.Button
cc.Button 1:添加按钮的方法 (1)直接创建带Button组件的节点; (2)先创建节点,再添加组件;2:按钮组件, 按钮是游戏中最常用的组件, 点击然后响应事件;3: 按钮的过渡效果: ...
- sizeof 感知重载,模板具现, 转换规则
问题:如何侦知任意型别 T 是否可以自动转换为型别 U? 方案:侦测转换能力的想法:合并运用 sizeof 和重载函数. 1 依赖 sizeof,sizeof 有着惊人的能力,你可以把 sizeof ...
- 如何系统学习并且掌握JavaScript
- 第二次:Ubuntu16.04 安装Docker
sudo apt-get update, 就这一个命令执行了多半天,不知道网络缘故还是怎么的,管他呢,装完总是好的. # step 1: 安装必要的一些系统工具 sudo apt-get update ...