文档章节

HBase解决Region Server Compact过程占用大量网络出口带宽的问题

 天下杰论
发布于 2015/04/01 16:11
字数 823
阅读 38
收藏 0

  HBase 0.92版本之后,Region Server的Compact过程根据待合并的文件大小分为small compaction和large compaction两种,由此可能导致在集群写入量大的时候Compact占用过多的网络出口带宽。本文将详细描述集群使用过程中遇到这一问题的排查过 程及其解决方法。

1. 发现问题

  HBase集群(版本为0.94.0)运行过程中,发现5台Region Server的网络出口带宽经常维持在100MB/s以上,接近到网卡的极限;同时Region Server的机器load负载也很高,高峰时候能够达到30~50。

2. 排查问题

  1、集群实际运行过程中,观察到Region Server服务端的网卡,平均每台写入流量大概60MB/s(此时写入量已经很大了);读出流量90MB/s,有时甚至突破100MB/s(注:每台机器都是千兆网卡);

  2、观察实际的写入数据量在每秒5w tps左右,单条记录平均大小为1KB,大概会占用50MB/s左右的网卡入口带宽请求量,和观察到的现象一致;

  3、观察查询量在每秒6w qps左右,单条记录平均大小为1KB,大概会占用60MB/s左右的网卡出口带宽请求量,奇怪的是实际观察到有接近甚至超过100MB/s的网络出口带宽请求量,多出了40MB/s左右的网络出口带宽;

  4、经分析排查确定导致上述过程的原因,可能是HBase服务端由于写入量过大频繁触发compaction过程,而compaction是需要读HBase数据的,因此占据了相当部分的网络出口带宽;

  5、结合对相关源码org/apache/hadoop/hbase/regionserver/CompactSplitThread.java的分析,决定对HBase集群配置做出变更(具体见下一小节),主要目的是减少compaction的发生;

  6、接下来,观察到Region Server的网络利用率明显降低,一般进出口带宽能维持在70MB/s以下。

3. 解决问题

 HBase 0.92版本之后增加了关于compact的配置选项,compact分为small compaction和large compaction两个线程池执行(默认都是各有1个线程,具体源代码见:org/apache/hadoop/hbase/regionserver /CompactSplitThread.java),由于compact过程需要从HBase集群读取数据,因此实际运行中导致了compact占用大 量网络出口流量,解决方案为选择性地关闭small compaction或large compaction。有以下两种变更方式均可解决:

  1)方案一

  (1) 修改hbase.regionserver.thread.compaction.throttle为一个很大的值(如50GB),强制让所有compact都变为small compaction,减少compact的压力;

  (2) 将small compaction和large compaction线程数均设置为1,减少compact的压力(可不配置,系统默认也会将其初始化为1)。

  操作步骤:

  准备hbase-site.xml文件,添加或修改如下选项:

  重启集群使配置生效。

  2)方案二

  将small compaction线程数均设置为0,从而关闭small compaction,只剩下large compaction,也可减少compact的压力。

  操作步骤:

  准备hbase-site.xml文件,添加或修改如下选项:

  重启集群使配置生效。

本文转载自:http://jishu.zol.com.cn/2898.html

共有 人打赏支持
粉丝 54
博文 450
码字总数 24615
作品 0
沈阳
项目经理
私信 提问
HBase解决Region Server Compact过程占用大量网络出口带宽的问题

HBase 0.92版本之后,RegionServer的Compact过程根据待合并的文件大小分为smallcompaction和large compaction两种,由此可能导致在集群写入量大的时候Compact占用过多的网络出口带宽。本文将...

超人学院
2015/05/26
0
0
HBase之一:HBase原理和设计

一、简介 HBase —— Hadoop Database的简称,Google BigTable的另一种开源实现方式,从问世之初,就为了解决用大量廉价的机器高速存取海量数据、实现数据分布式存储提供可靠的方案。从功能上...

litterMo
01/07
0
0
深入解读HBase2.0新功能之高可用读Region Replica

为什么需要Region Replica 在CAP理论中,HBase一直是一个CP(Consistency&Partition tolerance)系统。HBase一直以来都在遵循着读写强一致的语义。所以说虽然在存储层,HBase依赖HDFS实现了数...

HBase技术社区
2018/06/07
0
0
深入解读HBase2.0新功能之高可用读Region Replica

前言 基于时间线一致的高可用读(Timeline-consistent High Available Reads),又称Region replica。其实早在HBase-1.2版本的时候,这个功能就已经开发完毕了,但是还是不太稳定,离生产可用...

正研
2018/06/04
0
0
Hbase原理以及基本运行方式和优化

HBase是一个构建在HDFS上的分布式列存储系统; HBase是基于Google BigTable模型开发的,典型的key/value系统; HBase是Apache Hadoop生态系统中的重要一员,主要用于海量非结构化数据存储; ...

脸大的都是胖纸
2015/07/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 看见这花臂了么?赶紧叫大佬!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享周华健的单曲《有没有一首歌会让你想起我》 《有没有一首歌会让你想起我》- 周华健 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
68
4
Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
今天
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
3
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
18
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部