Hbase regionserver频繁突然挂掉的问题处理

这篇具有很好参考价值的文章主要介绍了Hbase regionserver频繁突然挂掉的问题处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

系统:linux centos7.4
Hbase:2.1.0-cdh6.3.2 (CDH版本)

二、现象

1、应用方报错:

Connection refused: hadoop05/ip:16020

2、查看cdh页面

发现HBase的regionserver有4个节点,全部挂掉

三、问题排查

登录机器查看日志,发现两个明显错误和一个奇怪的情况:

1、snapshot超时

2022-11-08 17:50:22,005 INFO org.apache.hadoop.hbase.procedure.ProcedureMember: Received abort on procedure with no local subprocedure vtable.DATA_ZT.CABIN_FIND.1667736700479, ignoring it.
org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable via timer-java.util.Timer@77c0afe2:org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! Source:Timeout caused Foreign Exception Start:1667736605731, End:1667737205731, diff:600000, max:600000 ms
	at org.apache.hadoop.hbase.errorhandling.ForeignException.deserialize(ForeignException.java:169)
	at org.apache.hadoop.hbase.procedure.ZKProcedureMemberRpcs.abort(ZKProcedureMemberRpcs.java:336)
	at org.apache.hadoop.hbase.procedure.ZKProcedureMemberRpcs.watchForAbortedProcedures(ZKProcedureMemberRpcs.java:145)
	at org.apache.hadoop.hbase.procedure.ZKProcedureMemberRpcs.start(ZKProcedureMemberRpcs.java:360)
	at org.apache.hadoop.hbase.regionserver.snapshot.RegionServerSnapshotManager.start(RegionServerSnapshotManager.java:125)
	at org.apache.hadoop.hbase.procedure.RegionServerProcedureManagerHost.start(RegionServerProcedureManagerHost.java:54)
	at org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:979)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! Source:Timeout caused Foreign Exception Start:1667736605731, End:1667737205731, diff:600000, max:600000 ms
	at org.apache.hadoop.hbase.errorhandling.TimeoutExceptionInjector$1.run(TimeoutExceptionInjector.java:69)
	at java.util.TimerThread.mainLoop(Timer.java:555)
	at java.util.TimerThread.run(Timer.java:505)

2、内存频繁超过高水位watermark

2022-11-08 17:55:22,932 WARN org.apache.hadoop.hbase.regionserver.HeapMemoryManager: heapOccupancyPercent 0.95184726 is above heap occupancy alarm watermark (0.95)
2022-11-08 17:55:24,141 INFO org.apache.hadoop.hbase.regionserver.HeapMemoryManager: heapOccupancyPercent 0.7269536 is now below the heap occupancy alarm watermark (0.95)

3、奇怪的情况:没有正常关闭的日志

每个节点的日志,都是突然停止的。查看进程,已经不在了。

四、原因

1、snapshot尚未找到原因

2、内存频繁超过高水位

结合没有正常关闭的日志,猜测可能是系统内存OOM导致的。
意识查看当前进程,是否有非正常关闭的:

[root@hadoop05 hbase]# jps
31058 Jps
14696 -- process information unavailable
15243 DataNode
13597 NodeManager
12143 Kafka

果真发现process information unavailable字样,代表此进程非正常关闭。
再查看是否是hbase进程(这台机器上只有regionserver这一个hbase进程):

[root@hadoop05 hbase]# find / -name 14696
/tmp/hsperfdata_hbase/14696

然后根据进程pid,查看系统日志,是否有oom-killer的情况:

[root@hadoop05 hbase]# less /var/log/messges

Nov  9 16:56:41 hadoop05 kernel: Out of memory: Kill process 14696 (java) score 166 or sacrifice child
Nov  9 16:56:41 hadoop05 kernel: Killed process 14696 (java) total-vm:9259984kB, anon-rss:2694204kB, file-rss:0kB, shmem-rss:0kB
Nov  9 16:56:41 hadoop05 kernel: ctcss-agentd invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
Nov  9 16:56:41 hadoop05 kernel: ctcss-agentd cpuset=/ mems_allowed=0

结果发现,regionserver果真被系统kill掉了

五、解决

1、查看资源情况

发现机器只有16G的内存,上面部署了nodemnager、datanode,nodemanager根据任务运行情况,会占用1-16G内存(也不知道谁配置的,16G的机器,配置的nodemanager container可用最大内存yarn.scheduler.maximum-allocation-mb和yarn.nodemanager.resource.memory-mb都是60G,所以可能占满[当然还要考虑nodemanager所在机器的物理内存使用率超过高水位时候的停止服务问题,所以不会完全占满]),datanode占得不多,也需要分一些。剩余给regionserver的资源其实不多。

2、查看regionserver内存情况

regionserver的heapsize给的是2G,bucketcache是4G,memstore是128M

经过查看机器上的region数量,发现4个regionserver承载了515个region,平均每个rs需要有128个region,这些region都需要至少1个memstore,每个memstore是128M,总共需要16G的内存才能满足这些regoin同时写入需求。而heapsize只给了2G,这也解释了,为什么总是报触及watermark的报错了。

3、综上,得出结论

这里的问题有两个:

1)、yarn配置的资源过高

这个导致yarn有任务跑的时候,会将机器资源占满,而根据系统oom-killer的策略,会将使用内存最高的进程杀掉。map和reduce的内存配置都是0,那么默认会给1g的容器大小。所以,regionserver大约会占2G的ram,可能会占用4-5G的虚拟内存,killer的评分很高,基本每次都被杀掉。

这是主因。
2)、每个rs的region很多

平均每个rs有128个region,那么在普通情况下,2G的heap只能够给16个region的memstore提供内存,而这2G的内存,还要给其他功能使用。所以,经常会出现触及watermark的情况。

4、解决

1)、临时解决办法

将yarn.scheduler.maximum-allocation-mb和yarn.nodemanager.resource.memory-mb设置为8G。避免给yarn分配的内存过多,发生oom-killer。

2)、根本解决办法

终极解决办法:巧妇难为无米之炊,该加资源加资源。
资源充足的情况下,能规避90%的问题。

六、反思与规避

1、部署大数据集群的时候,应先了解清楚业务情况

比如数据量;业务是以实时还是离线为主;业务流程是什么样;业务中间结果数据有多少;实时任务流使用的组件;离线任务流使用的组件等等。
最关键的是要依据以上内容,评估各大数据组件的关键参数。

2、集群依赖的主机资源必须充足

在有些项目的生产环境上,客户对大数据组件使用的资源量有疑问:怎么会用那么多资源?
这时候,直面客户的技术人员一定要讲清楚,争取到最大的资源。否则就会出现如上的问题,资源不足,徒增烦恼。文章来源地址https://www.toymoban.com/news/detail-409203.html

好记性不如赖笔头。
与君共勉。

到了这里,关于Hbase regionserver频繁突然挂掉的问题处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【斩虫】Hadoop中作业执行刚开始就挂掉的两种情况

    开门见山。 最近在搭建基于 Hadoop 3.3.6 的高可用集群时,遇到了虽然守护进程能正常启动,但是提交 WordCount 示例程序后作业没有办法启动执行的情况(刚开始就挂了),查看日志发现主要是以下两种情况: 提示 /bin/java 文件不存在。 启动 MRAppMaster 失败,原因是其抛出了 j

    2024年02月19日
    浏览(29)
  • 线上宝塔部署的springboot项目在执行elasticsearchRepository.saveAll后就挂掉的解决方法

    当mysql数据库中数据更新后,可以使用 elasticsearchRepository.saveAll() 方法来将新增的数据保存到elasticsearch文档库中。 在我所在的场景下,大概每个月会一下往数据库写入几千条数据,然后一股脑得将之前的数据和新增的数据全部实体交给 saveAll() 方法,那么就会占用大量的内存

    2024年02月14日
    浏览(32)
  • HBase学习二:RegionServer详解

    RegionServer是HBase系统中最核心的组件,主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系,包含多个各司其职的核心模块:HLog、MemStore、HFile以及BlockCache。 一个RegionServer由一个(或多个)HLog、一个BlockCache以及多个Region组成。其中,HLog用来保证数

    2024年01月17日
    浏览(22)
  • 大数据面试题:HBase的RegionServer宕机以后怎么恢复的?

    面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)HBase一个节点宕机了怎么办;2)HBase故障恢复 参考答案: 1、HBase常见故障 导致RegionServer故障的原因: FullGc引起长时间停顿 HBase对Jvm堆内存管理不善,未合理使用堆外内存 Jvm启动参数配

    2024年02月14日
    浏览(28)
  • N5105 Promox VE 虚拟机频繁死机问题处理

    使用 N5105 作为 HomeLab 的服务器;之前安装的 ESXi,使用 Ubuntu 22 的时候经常会出现 Ubuntu CPU 占用达到100%,然后死机;但是其他的虚拟机都没有问题,因为对 Linux 并不熟,查看了 ESXi 和 Ubuntu 日志并没有异常;后面安装黑群晖一直失败,因此换到了 Proxmox VE 换到 PVE 后依然存在

    2024年02月04日
    浏览(30)
  • HBase 遇到的问题以及处理

    目前在hbase集群中发现了一些问题,主要是Region 一致性的问题,和RIT问题,根据目前遇到的问题整理了以下问题fix手册。 如果后面遇到新的问题可以再增加 Issue: Regions have the same start/end keys Cause Varies. Resolution 手动合并重叠的区域。 在 HBase HMaster Web UI 表详情页面,选择有问题

    2024年02月17日
    浏览(30)
  • es自动挂掉问题解决

    当es启动后一段时间就挂掉了,输入jps后显示 3262 – process information unavailable 解决方法: 这是因为jvm的虚拟机内存不足导致挂掉节点,所以通过修改以下文件 /export/servers/elasticsearch/config/jvm.options 将内存调成64M即可 重新启动elasticsearch,问题解决

    2024年02月11日
    浏览(22)
  • 暴力解决注册表删不掉的问题

    今天在使用注册表编辑器修改注册表权限的时候,不小心把所有用户对某个注册表的权限全部拒绝了。等到我再想修改的时候,右键点击该文件,选择了“权限”后,弹出的编辑界面的“组或用户名”一栏中没有出现任何内容。倒腾了半天也实在不知道怎么处理,于是一气之

    2024年02月12日
    浏览(40)
  • 频繁GC引起卡顿问题排查与解决

    今天测试组更新测试环境后发现系统卡顿,无法办理任何业务,重启系统后问题仍然存在。已经到项目后期,迭代测试时间十分紧张。此问题直接影响到项目进度 1.查看进程资源占用情况 Linux 下常用top命令显示系统中各个进程的资源占用状况,查看资源发现PID26799进程信息中

    2023年04月23日
    浏览(24)
  • Qt 解决界面频繁刷新卡顿的问题

    有时候当我们需要频繁刷新界面的时,界面就会出现卡顿,或者卡死的情况,这个时候需要这样做。 本例使用QTableView为例子为大家讲解解决方法。 猜想一:缓存+定时器 当有数据的时候调用setShowText()方法,将数据缓存到队列中,然后通过定时器QTimer,每隔一段时间调用slo

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包