微信号:xqbedu

介绍:最专业的网络虚拟教室,为专家和名师提供课程定制和推广服务,为学员提供平等的学习环境.公司网站www.xqbedu.com

HBASE集群HDFS存储不均衡的解决记录

2016-10-28 22:54 学前班

问题描述:hbase集群,hdfs有5台服务器的存储空间占用很高,如下图


问题解决思路

1:hbase集群出现hdfs存储不均衡的问题首先要考虑Hbase数据倾斜要看hbase是否倾斜就要看region的分布是否均衡,再看大表数据块是否均衡检查发现hbase数据很均衡,排除hbase的问题,具体查看如下图: 

2:排除hbase数据倾斜问题后,发现存储占用比较高的5台服务器block块巨多,几乎是其它的两倍,那么数据没出现倾斜,为什么block块这么高的?就要考虑这5台服务器上是不是跑着一些MR等任务,因为这些任务在Shuffle等过程会将中间过程的数据存储在本地,所以要找有没有一些跑的任务,经检查也没有任务,如下图:

5台服务器block的分布如下图:



 3排除以上两个问题后,就要检查Ip或者机架的分布了,执行hadoop dfsadmin –printTopology发现13台机器,8台属于一个机架,令5台属于一个机架,正好这一个机架的5台服务器存储很高,那么问题就出来了,根据hdfs的三备份机制,第二份数据是先备份到同一机架的最近的一台服务器,第三份数据要备份在不同机架的任一服务器,也就是那8台服务器要往这5台上面备份,那么这5台的存储必然很高。

如何解决呢:

1:去掉hadoop的机架感知配置,core.xml中net.topology.script.file.name配置去掉,建议apache这样改。

2:把那5台服务器挪到另一机架上面去,这样13台属于同一机架。(采用这种)

然后最后要重启hdfs服务,再对大表数据做major_compact操作,均衡数据。 这里一定是一个表一个表的做,因为很费io和存储

Hadoop机架感知如下图:

 

总结:hdfs存储不均衡的问题最终定位到由于服务器属于不同机架,依据hdfs数据块三备份的机制造成的问题。所以在后续再搭建集群时,要注意到机架的分布对集群所造成的影响。

 
学前班网络技术有限公司 更多文章 实用 | Apache Hadoop 3.0新版本介绍及未来发展方向 2017年百度腾讯等 校招高频面试题 全球首个微信应用号开发教程第一弹! 大数据与机器学习:2016年中盘点 白话大数据 | hadoop究竟是什么鬼
猜您喜欢 分享一个CQRS\/ES架构中基于写文件的EventStore的设计思路 北京广州杭州上海本周招聘信息汇总 Go语言并发模型:以并行处理MD5为例 转载|黑客 Only_Guest 讲述:如何优雅地手刃骗子? 专访 .NET 开源关键决策者潘正磊