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、观察实际的写入数据量在每秒5wtps左右,单条记录平均大小为1KB,大概会占用50MB/s左右的网卡入口带宽请求量,和观察到的现象一致;
3、观察查询量在每秒6wqps左右,单条记录平均大小为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文件,添加或修改如下选项:
<property>
<name>hbase.regionserver.thread.compaction.throttle</name>
<value>53687091200</value>
</property>
<property>
<name>hbase.regionserver.thread.compaction.small</name>
<value>1</value>
</property>
<property>
<name>hbase.regionserver.thread.compaction.large</name>
<value>1</value>
</property>
重启集群使配置生效。
2)方案二
将small compaction线程数均设置为0,从而关闭small compaction,只剩下large compaction,也可减少compact的压力。
操作步骤:
准备hbase-site.xml文件,添加或修改如下选项:
<property>
<name>hbase.regionserver.thread.compaction.small</name>
<value>0</value>
</property>
重启集群使配置生效。
相关推荐
HBASERegion数量增多问题描述及解决方案.docx
region中存储的是大量的rowkey数据 ,当region中的数据条数过多的时候,直接影响查询效率.当region过大的时候.hbase会拆分region , 这也是Hbase的一个优点 . HBase的region split策略一共有以下几种: 1、...
赠送jar包:hbase-server-1.4.3.jar; 赠送原API文档:hbase-server-1.4.3-javadoc.jar; 赠送源代码:hbase-server-1.4.3-sources.jar; 赠送Maven依赖信息文件:hbase-server-1.4.3.pom; 包含翻译后的API文档:...
hbase-region-inspector, HBase区域统计信息的可视化仪表板 hbase-region-inspectorHBase区域统计信息的可视化仪表板。 用法下载与HBase集群版本匹配的可执行二进制插件,添加execute权限,并使用以下命令行参数启动...
赠送jar包:hbase-server-1.1.3.jar; 赠送原API文档:hbase-server-1.1.3-javadoc.jar; 赠送源代码:hbase-server-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-server-1.1.3.pom; 包含翻译后的API文档:...
赠送jar包:hbase-server-1.2.12.jar; 赠送原API文档:hbase-server-1.2.12-javadoc.jar; 赠送源代码:hbase-server-1.2.12-sources.jar; 赠送Maven依赖信息文件:hbase-server-1.2.12.pom; 包含翻译后的API文档...
赠送jar包:hbase-server-1.2.12.jar; 赠送原API文档:hbase-server-1.2.12-javadoc.jar; 赠送源代码:hbase-server-1.2.12-sources.jar; 赠送Maven依赖信息文件:hbase-server-1.2.12.pom; 包含翻译后的API文档...
HBase+ElasticSearch搭建过程详解
HBase系统中Region自动切分是如何实现的,这里面涉及很多知识点,比如Region切分的触发条件是什么、Region切分的切分点在哪里、如何切分才能最大的保证Region的可用性、如何做好切分过程中的异常处理、切分过程中要...
赠送jar包:hbase-server-1.1.3.jar; 赠送原API文档:hbase-server-1.1.3-javadoc.jar; 赠送源代码:hbase-server-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-server-1.1.3.pom; 包含翻译后的API文档:...
HBase技术介绍.docx
HBase常见热点问题及几种解决方案.docx
hadoop-2.52-hbase-0.14-hadoop2 ha高可用安装,hbase动态添加删除节点,hbase集群正常状态及启动,hbase 问题汇总
java 利用 sping-data-hadoop HbaseTemplate 操作hbase find get execute 等方法 可以直接运行
2. 请简述HBase中数据写入最后导致Region分裂的全过程 3. 如果设计一个笔记的表,表中要求有笔记的属性和笔记的内容,怎么做 4. HBase部署时如何指定多个zookeeper 5. HBase shell是基于哪种JVM运行的语言实现的 6. ...
elasticsearch-auth.zip,此插件筛选ElasticSearch内容。ElasticSearch的身份验证筛选器
HBASE的一个读取数据流程的解析,清晰的画出整个过程,十分有利于理解
从SQLServer导入HBase的sqoop jar包
介绍HBase2.x之RIT问题解决
HBase相对于关系数据库能解决的问题是什么? 2 HBase与关系数据的区别? 2 HBase与RDBMS的区别? 2 3. HBase的数据模式是怎么样的?即有哪些元素?如何存储?等 3 1). 数据模式 3 2). HBase的基本元素: 4 3) ...