HBase-线上问题排查思路

1 写入阻塞

表现为服务器数据无法写入,RegionServer经常宕机,修复方法优先级从高到低:

1.1 RegionServer堆内存设置太小

默认1GB,Memstore占40%,非常容易阻塞

1.2 HFile达到了最大的数量阀值

如果HFile达到了hbase.hstore.blockingStoreFiles最大数量,Memstore就不能继续刷写数据到HDFS,而数据还会继续加入Memstore,导致Memstore阻塞。所以可以适当调大该阀值

1.3 Memstore的大小达到阀值

当Memstore达到了hbase.hregion.memstore.flush.size * hbase.hregion.memstore.block.multiplier时候,就无法写入到Memstore了,这是后就直接表现为写入阻塞。可以略微调大这两个参数,单实际作用不大。

1.4 整个RegionServer上的Memstore总内存达到了一个阀值

当整个RegionServer上的Memstore总内存占用到达到了hbase.regionserver.global.memstore.size,就会导致写入阻塞,也就是占用堆内存的比例,默认0.4,虽然可以调大,但是Memstore+BlockCache的总内存不能超过80%,否则会报错,所以尽量不要设置这个参数。

2 朱丽叶暂停

集群运行了一段时间,导致RegionServer莫名其妙的宕机了,重启虽然可以解决暂时,但是无法避免,具体情况原因有一下几点:

  • Zookeeper检测到一个RegionServer太久没有心跳回应,会表机其为死亡
  • FullGC导致REgionServer发生了STW,依旧被Zookeeper标记为了死亡
  • 如果RegionServer标记为了死亡,其他RegionServer会分担其上的所有数据,执行一些列的恢复步骤
  • 这个RegionServer虽然之后活过来了,但是发现已经被标记为死亡,只能自杀来防止整个集群乱套了

2.1 RegionServer堆内存设置太小

还是那个问题,默认1G,很容易发生性能问题

2.2 Zookeeper的心跳超时时间太小

默认超时时间是90s,但是因为HBase的机制原因,实际只有40s的超时时间,设置方法具体如下:
首先在hbase-site.xml中增加zookeeper超时配置项:

<property>
<name>zookeeper.session.timeout</name>
<value>18000</value>
</property>

但是Zookeeper自己还有一个超时时间:

#conf/zoo.cfg中的tickTime,默认为2s
tiackTime=2000
#通过tickTime计算出minSessionTimeout
minSessionTimeout = 2* tickTime =4s
#通过tickTime计算出maxSessionTimeout
maxSessionTimeout =20 * tickTime =40s
#如果zookeeper.session.timeout < minSessionTimeout,那么最终采用minSessionTimeout。
#如果zookeeper.session.timeout > maxSessionTimeout,那么最终采用maxSessionTimeout。

所以随人上边配置了180s,但是实际还是使用40S作为超时时间,所以还需要调大tickTime,这个方案不建议在生产环境上使用,生产环境要保证sessionTimeout越小越好,越小表示集群对宕机的响应时间越短,服务的稳定性越高。

2.3 选择合适的GC回收策略

FullGC导致的朱丽叶暂停可以根据堆内存大小来选择合适的GC策略

  • 堆内存小于4G,使用-XX:+UseParNewGC -XX:+UseConcMarkSweepGC
  • 堆内存大于4G小于32G,使用-XX:+UserParNewGC -XX:+UserConcMarkSweepGC或者-XX:UseG1GC
  • 堆内存大于32G,使用-XX:UseG1GC

2.4 使用新的内存空间策略

使用HBase专用的MSLAB内存空间策略,把内存空间分为很多歌独立的Chunk,消除了堆内存的碎片问题,几乎消除了FullGC,同时配合G1GC效果更好,默认MSLAB为开启,但是没分配chunck相当于关闭,开启方式为:

hbase.hregion.memstore.mslab.enabled=true
#整个Memstore可以占用的内存存中Memstore的比例,设置为非0.0即为开启,0.0-1.0
hbase.hregion.memstore.chunkpoll.maxsize
#预分配chunk占总的chunkPool的比例,是一个百分比,取值范围是0.0-1.0,预分配一些性能会更加平滑
hbase.hregion.memstore.chunkpool.initialsize

3 读取性能调优

如果应用的性能读大于写,那么应该做适量的读取调优,可以从API和系统配置两方面来进行配置。遇到读写性能瓶颈的时候,要优先考虑API是不是使用合理,比如对Scan的内部工作原理不熟悉导致写出的Scan额外遍历了非常多不需要遍历的KeyValue。

3.1 使用过滤器

学习并了解各种过滤器的原理,灵活的在业务上使用合适的过滤器可以减少不必要的遍历次数,比如前缀过滤器、分页过滤器。

3.2 增加BlockCache

虽然增加BlockCache的容量可以有更多数据被缓存,但是最终是否有效,还是由命中率决定的,如果命中率本身就很高,那么增加BlockCache的性能应该可以提升很明显,而命中率低的话可以考虑增加命中率。命中率的查看的获取步骤为:

  • 访问RegionServer的指标页面,16030端口,老版本为60030
  • 查找Hadoop:service=HBase,name=RegionServer,sub=Server指标区域
  • 分别找到blockCacheCountHitPercent和blockCacheExpressHitPercent。
    增加BlockCache要注意的是,BlockCache+Memstore的总内存比例不能超过RegionServer堆内存的0.8,两者默认都是0.4,所以必须要适当调小Memstore。

3.3 修改HFile合并策略

调整Compaction策略,让HFile的数量尽量减少,以减少每次Scan的跨HFile的次数,但是同时又要保证该合并策略适用于任务场景,并且compaction次数不能太频繁。


4 其他紧急检查命令

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容