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

2023-11-08

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

Copy
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)
排查思路如下:

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

确实发现了不一致的异常

8 inconsistencies detected

(2) 尝试修复该问题

hbase hbck -repair iot_flow_cdr_201811

执行该命令出现下述错误

Copy
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也恢复了正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 查看文件中关键字前后几行的内容

    有时候文件太大 我们无法全部看完 去查找我们想要的内容 这时我们需要linux命令来查看某个关键字前后几行的内容 grep 使用linux的help命令 如下图 我们可以看到grep的用法 这里我们关注关键字前后的显示问题 以文件test
  • elk多项目收集

    1 filebeat配置 gt etc filebeat filebeat yml filebeat prospectors type log enabled true paths root project logs all all log
  • BACnet MSTP协议485功能测试

    文章目录 BACnet MSTP协议485功能测试 一 命令行运行方法 二 测试工具 1 使用sscom串口助手 2 使用yabe查看结果 三 代码部分 1 包含头文件 2 变量和宏定义 2 RS485配置函数 3 RS485初始化函数 使
  • 【容器适配器的认识与模拟】

    目录 前言 一 引入 二 容器适配器 一 stack deque stack模拟实现 二 queue queue模拟实现 为什么栈和队列要使用deque 三 priority queue priority queue模拟实现 总结 前言 打
  • AngularJS 学习笔记(四)--- 表单验证和常用API

    一 表单验证 1 概念 AngularJS 表单和控件可以对输入的数据进行验证 并对用户输入的非法数据进行警告 一般来说就算前端进行了验证 后端为了安全还是要再次进行验证 HTML5的表单本身带有一定的验证能力 可以与 AngularJS
  • 最新JetBrains PyCharm 使用教程--常用快捷键和设置PyCharm为Eclipse快捷键(四)

    PyCharm常用快捷键使用 Ctrl D 复制当前行 Ctrl Y 删除当前行 Ctrl Z 撤销 Shift Enter 快速换行 Ctrl 快速注释 Ctrl F 查找 Ctrl H 替换 Tab 缩进 Shift Tab 取消缩进
  • nginx 转发webSocket连接请求

    一 导读 nginx 是一个反向代理的轻量服务器 能对http请求进行转发 但是最新学习websocket发现 普通的nginx转发http请求时候无法转发websocket请求 今天就来介绍一下nginx如何转发websocket请求 与
  • 初识上下文切换

    上下文切换 什么是上下文切换 在单个处理器时期 操作系统就能够多线程并发执行任务 处理器给每个线程分配CPU时间片 线程在分配的时间片内执行任务 CPU时间片是CPU分配给每个线程执行的时间片段 一般几十毫秒 在这么短的时间里线程互相切换
  • 如何在excel中单独冻结多行或多列

    方法 1 首先打开相应的excel表格 确定要冻结的冻结的多行或多列 下面以冻结多行为例 先在界面上找到 视图 冻结窗格 最后找到 冻结首行 2 点击 冻结首行 后 在表格第一行下面会出现一条细实线 此时再点击 拆分 选项 3 拆分后 细实
  • 通过浏览器控制台使用js脚本进行浏览器操作(定时点击等)

    进行此操作前我们首先需要了解js编程语言 了解之后我们就可以去操作了 这里我们拿csdn评论举例子 点开评论界面右键审查元素 此时我们需要找到输入框dom和评论按钮dom 点击元素之后点击箭头然后去界面上选中文本框核按钮 然后我们就可以知道
  • 解决VSCODE 因为在此系统上禁止运行脚本 报错

    文章转载自 https blog csdn net larpland article details 101349586 学习react的时候 在VSCODE中使用yarn 结果报错 找了下原因 是因为PowerShell执行策略的问题 解
  • 基于matlab的人脸识别算法

    基于matlab的人脸识别算法 1 主成分的数目的选取 前已指出 设有p个随机变量 便有p个主成分 由于总方差不增不减 C1 C2等前几个综合变量的方差较大 而Cp Cp 1等后几个综合变量的方差较小 严格说来 只有前几个综合变量才称得上主
  • VC++ 隐藏控制台程序窗口

    转自 http hi baidu com sicceer blog item d9c35a810d15c4c8bc3e1ec8 html 设置 pragma comment linker subsystem windows entry ma
  • 2021年总结和2022年规划(全面进行,take it easy)

    先说下为啥要take it easy 算了笔账 如果今年就此失业 还有4200房贷 但是planb就是终身每月9200 还剩下5000 足够买菜自由了 所以控制消费欲望即可 别人是先编程到挣够后半辈子的钱 而我是逆行 先挣够后半辈子的钱再编
  • anaconda换清华镜像源(Windows)

    第一步 在C Users 用户名 下输入如下图所示的命令 conda config set show channel urls yes 第二步 在下图路径 找到如下图蓝色标记的文件 第三步 用记事本打开上一步找到的文件 将里面的内容完全替换
  • 解决1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server

    1 docker pull mysql 安装mysql 2 启动mysql容器 docker run name mysql p 3306 3306 e MYSQL ROOT PASSWORD 123456 d mysql 使用Navicat
  • C++中栈和队列、set、vector的基本使用方法

    在算法中栈和队列的使用的频繁的 在学习算法的过程中栈 队列 set vector的使用方法我们一定要掌握 在C 中栈和队列 set vector已经被封装好了 我们可以直接通过以下步骤调用栈和队列 1 相关头文件 包含栈头文件 includ
  • Conda 创建,查看,激活,关闭激活,删除 虚拟环境的方法【亲测】

    创建虚拟环境的方法 conda create n aa222 python 3 8 表示创建一个名字为aa222的环境 这环境用的python版本是3 8版本的 请根据自己的python版本进行选择 也可以使用下面的方法创建 conda c
  • Java连接kafka

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

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