Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1095|回复: 0

线上问题排查-HBase写数据出现NotServingRegionException(Region ... is not online)异常

[复制链接]
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-30 17:14:58 | 显示全部楼层 |阅读模式

    今天线上遇到一个问题:有一台服务器的cpu持续冲高,排查发现是我们的一个java应用进程造成的,该进程在向hbase中写入数据时,日志不断地打印下面的异常:

    org.apache.hadoop.hbase.NotServingRegionException: Region iot_flow_cdr_201811,4379692584601-2101152593-20181115072326-355,1536703383699.82804f639798d0502dd64e6e47d75d84. is not online on shqz-ps-iot3-cdr-dn01,60020,1524812940505
          at org.apache.hadoop.hbase.regionserver.HRegionServer.getRegionByEncodedName(HRegionServer.java:2921)
          at org.apache.hadoop.hbase.regionserver.RSRpcServices.getRegion(RSRpcServices.java:1053)
          at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:2096)
          at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:33656)
          at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2170)
          at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:109)
          at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
          at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
          at java.lang.Thread.run(Thread.java:745)
    

    排查思路如下:

    1. 查看hbase的请求数量是否过高:通过hbase的web控制界面查看RegionServer的请求数,如下图
      rs.png
      可以看到,Request Per Second并不高,排除这个原因。
    2. 检查表iot_flow_cdr_201811信息是否正常
      (1) 检查该表是否存在一致性问题

    hbase hbck -details iot_flow_cdr_201811

    确实发现了不一致的异常

    8 inconsistencies detected

    (2) 尝试修复该问题

    hbase hbck -repair iot_flow_cdr_201811

    执行该命令出现下述错误

    18/11/15 11:28:15 WARN util.HBaseFsck: Got AccessDeniedException when preCheckPermission 
    org.apache.hadoop.hbase.security.AccessDeniedException: Permission denied: action=WRITE path=hdfs://nameservice1/hbase/.hbase-snapshot user=root
            at org.apache.hadoop.hbase.util.FSUtils.checkAccess(FSUtils.java:1797)
            at org.apache.hadoop.hbase.util.HBaseFsck.preCheckPermission(HBaseFsck.java:1932)
            at org.apache.hadoop.hbase.util.HBaseFsck.exec(HBaseFsck.java:4734)
            at org.apache.hadoop.hbase.util.HBaseFsck$HBaseFsckTool.run(HBaseFsck.java:4562)
            at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
            at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
            at org.apache.hadoop.hbase.util.HBaseFsck.main(HBaseFsck.java:4550)
    Current user root does not have write perms to hdfs://nameservice1/hbase/.hbase-snapshot. Please rerun hbck as hdfs user hbase
    

    根据提示可以看到,错误原因是没有权限Permission denied
    然后我们以hbase用户身份执行该命令

    sudo - hbase hbase hbck -repair iot_flow_cdr_201811

    这次执行成功了,等命令执行完成后,修复了inconsistencies(数据不一致)的错误。
    最后重启应用,观察日志,程序正常执行,NotServingRegionException异常不再出现了,服务器cpu也恢复了正常。

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-27 13:10 , Processed in 0.056974 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表