Hbase RegionServer 挂掉自动重启

hbase_使用中遇到的问题(reginserver节点挂掉) 现象:    新搭建了四台hbase集群,创建了100多张表,导入了3000多万的记录。在使用过程中,每个小时的第36分钟其中一个regionserver节点挂掉,另两个regionserver节点跟着也挂掉。master节点没问题。先挂掉的regionserver节点的日志节选:2018-06-06 10:35:50,125 WARN  [RpcServer.FifoWFPBQ.default.... 阅读详情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

hbase生产环境与hadoop集群共用资源,当hadoop资源cpu,带宽,内存占用较多,可能会导致regionserver挂掉,regionserver如果挂掉超过集群regionserver总个数的一半以上,那么集群就会出问题,所以迫切的需要regionserver挂掉自动恢复机制。本文即为使用python 与crontab 定时检查regionserver dead节点,并重启的例子。


一、实现原理

    通过hbase的60010页面,查看hbase节点状态情况,检测到regionserver dead,自动通过ssh 隧道到regionserver的主机,执行regionserver启动命令,并发送到企业微信告警。

hbase:1.2.0-cdh5.7.0

python:3.7+

调度工具:dolphinsheduler 3.0,也可以用crontab 

二、实现步骤

1、python脚本

新建Hbase.py文件,代码如下:

# -*- coding: utf-8 -*-
import requests
import time
import json
import os

def get_now_time():
    """
    获取当前日期时间
    :return:当前日期时间
    """
    now = time.localtime()
    now_time = time.strftime("%Y-%m-%d %H:%M:%S", now)
    return now_time


# 获取html txt
def getHtml(url):
    r = requests.get(url)
    text = r.text
    print(r.elapsed.microseconds)
    # r.elapsed.total_seconds()
    return text


if __name__ == '__main__':
    for i in range(1, 2):
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
            'cache-control': 'no-cache',
            'content-type': 'application/json',
        }
        urls = [
            'http://hbase-master001:60010/jmx?qry=Hadoop:service=HBase,name=Master,sub=Server']
        for url in urls:
            print(url)
            txt = getHtml(url)
            jsonObj = json.loads(str(txt))
            deadRegion = jsonObj['beans'][0]['tag.deadRegionServers']
            deads = deadRegion.split(';')

            if len(deads) != 0:
                jAlert = "**告警通知:[" + str(len(deads)) + "]** \n"
                for dead in deads:
                    regionname = dead.split(',')[0]
                    if regionname != '00':
                        upload_time = get_now_time()
                        cmd = 'ssh -n -p 22 ' + regionname + ' ' + "'/home/hadoop/hbase/bin/hbase-daemon.sh start regionserver'"
                        jps = 'ssh -n -p 22 ' + regionname + ' ' + "'jps'"
                        print(cmd)
                        print(jps)
                        f = os.popen(cmd)
                        print(f.read())
                        f = os.popen(jps)
                        print(f.read())
                        jAlert = jAlert + ">问题名称:**<font color=\"warning\">" + "Hbase regionServer" + "</font>**\n" \
                                 + ">告警来源:<font color=\"comment\">" + "Hbase" + "</font>\n" \
                                 + ">告警时间:<font color=\"comment\">" + str(upload_time) + "</font>\n" \
                                 + ">问题详情:<font color=\"comment\">" + regionname + " is dead" + "</font>\n" \
                                 + ">问题描述:<font color=\"comment\">" + regionname + " 正在重启中" + "</font>\n" \
                                 + ">目前状态:<font color=\"comment\">" + "firing" + "</font>\n" \
                                 + ">告警级别:<font color=\"comment\">" + "critical" + "</font>\n"
                jAlert = jAlert  + "————————————————\n"
                if len(deads) > 1:
                    data = {}
                    markdown = {}
                    markdown['content'] = jAlert
                    data['msgtype'] = 'markdown'
                    data['markdown'] = markdown
                    jdata = json.dumps(data, sort_keys=False, indent=4, separators=(',', ': '))
                    response = requests.post(
                        'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=******',
                        headers=headers, data=jdata)
                    print('response:' + response.text)
                    response.close()
            print(txt)

2、代码解读 

1、hbase master主机名称,改为自己的hbase master 主机名

2、企业微信机器人地址,需要修改为自己的webhook地址

3、ssh 端口号22,改为自己集群的隧道端口号

3、加入调度

3.1、crontab定义

sudo vi /etc/crontab

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
*/5 * * * * hadoop /home/hadoop//job/alert/Hbase.sh


3.2、重启crontab:

centos 6
重启crond服务
sudo /etc/init.d/crond restart

Centos 7
sudo systemctl restart crond.service

总结

提示:这里对文章进行总结:
以上就是对hbase的regionserver 挂掉自动重启的方法。

CDH Hbase regionmaster 经常挂掉、regionserver 重启不断挂掉 问题:hbase regionserver经常挂,如下图: 查看regionserver可以看到是配置不够,导致RegionServer发生FULL GC的时候,STW期间太长,被zookeeper标记为宕机,当RegionerServer GC完成后,苏醒了发现被标记为宕机了,这时候RegionerServer GC就自杀,防止脑裂发生,醒来再自杀。 解决方法,主要修改了hbase的配置,增加了HBase REST Server和HBase Thrift Server的Java堆栈大小: 阅读详情

相关推荐

【开源】基于TI ADS1299与ESP32的8通道脑电采集设备YuEEG全解析

本文详细解析了基于TI ADS1299芯片与ESP32主控的开源8通道脑电采集设备YuEEG。内容涵盖硬件设计、固件驱动开发及Python上位机软件实现,提供了从电路连接、SPI通信配置到数据读取与实时波形显示的全套教程。该项目为学习脑机接口(BCI)与高精度生物电信号采集提供了完整的开源解决方案,适合创客、学生及嵌入式开发者实践。

weixin_42576410的博客 1249

重启Hbase命令

注意先启动hadoop,记得重启zookeeper。 具体操作如下: cd hadoop-2.7.4/sbin/ && ./stop-all.sh && ./start-all.sh cd hbase-1.1.13/bin && ./stop-hbase.sh && ./start-hbase.sh cd zookeep...

weixin_30682415的博客 7707

微型纵向加密在新能源场站中的实战部署与运维避坑指南

本文详细解析了微型纵向加密在新能源场站中的实战部署与运维技巧。通过国密算法SM4实现数据加密,确保新能源场站通信安全,同时提供非侵入式部署方案和运维避坑指南,帮助提升网络稳定性和运维效率。

weixin_30505225的博客 598

hbase 节点重启

HBase节点重启的科普解析 HBase是一种开源的分布式数据库,设计用于处理大规模的结构化数据。它以列为单位进行存储,并且基于Hadoop的HDFS。在实际使用中,HBase的节点重启是一个常见的操作,但对于许多用户,尤其是初学者来说,如何安全且有效地重启HBase节点可能具有一定的挑战。本文将详细解析HBase节点重启...

weixin_42627812的博客 448

Matlab:imageDatastore() 高效读取图像数据集的实战技巧

本文详细介绍了Matlab中imageDatastore()函数的高效使用技巧,帮助用户从繁琐的手动读取图像数据集中解放出来。通过核心语法、关键参数(如IncludeSubfolders、LabelSource、ReadSize)的解析,以及数据集分割、打乱等进阶实战操作,指导读者构建稳定、高效的图像数据读取管道,特别适用于大型图像数据集处理和机器学习项目。

hill8的博客 1101

ubuntu-25.04-desktop-amd64 工具VMware-tools 正确安装方法

摘要:Ubuntu 25.04虚拟机安装VMware Tools后无法实现主机与虚拟机间的文件复制粘贴和拖拽功能,问题可能源于工具兼容性。建议优先安装open-vm-tools套件(含open-vm-tools-desktop),而非官方VMware Tools。具体方案:通过终端执行安装命令后重启系统。该方法已实测有效解决该兼容性问题。(149字)

安徽锐锋科技-沐雨潇竹 672

hbase的RegionServer内存占满导致频繁重启

hbase的RegionServer内存配置为16G,每次在运行统计任务的时候总会导致RegionServer自动重启。查看web界面发现,运行过程中RegionServer的内存使用率已经达到95%以上,从而导致regionServer长时间垃圾回收且回收不掉。通过spark的history查看任务失败阶段从而定位问题代码。 在代码中有个foreachPartition操作用来查找hbase表中该记录是否已存在。读取该分区下所有的主键,然后一次性查询hbase,导致RegionS...

lieying411 1745

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

hbase集群搭建,hbase单个节点重启

1.1 hbase集群结构 REGION:是HBASE中对表进行切割的单元 HMASTER: HBASE的主节点,负责整个集群的状态感知,负载分配、负责用户表的元数据管理 (可以配置多个用来实现HA) 为regionserver分配region,负责regionserver负载均衡 用户对表的增删改查 如果当前的regionserver宕机,会把region迁移 REGION-S...

涂作权的博客 7059

fbx bip互转 测试OK

fbx bip互转

jacke121的专栏 518

选课系统进不去?我用 Python 做了个“捡漏挂机”脚本,全自动监控空余名额

频率控制:脚本请求频率不要太高(建议间隔 3-5 秒以上),否则可能被教务系统封 IP,甚至会被教务处请喝茶。仅供学习:本文旨在通过选课场景教学requests和网络抓包原理,请勿用于非法用途或破坏公平性。刷新页面 -> 等待加载 -> 用眼睛看人数 -> 没满?-> 点击选课 -> 确认这个流程最大的瓶颈在于**“等待加载”和“人的反应时间”**。网页加载需要渲染 HTML、CSS、图片,而 Python 脚本只需要请求一个微小的 JSON 数据接口,速度是浏览器的10 倍以上。fill:#333;

BUG猿的博客 293

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

Hbase regionserver频繁挂掉问题处理

王木头的博客 2719

国科大学习资料--模式识别与机器学习(黄庆明)--期末复习题2(含答案)

国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) 国科大学习资料–模式识别与机器学习(黄庆明)–期末复习题2(含答案) ...

无名何许人的博客 1万+

自动恢复被挂掉的hbase region server

最近老遇到hbase的regionserver自动挂掉的情况 日志总是看不出什么原因不得已弄了个定时任务,任务的脚本类似是:pssh -H "bluejoe1 bluejoe2..." "/usr/local/hbase/bin/hbase-daemon.sh start regionserver"加入定时任务,让它隔10分钟执行一次:crontab -e 10,20,30,40,50,0 * *

白乔专栏 3595

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

20130617 hbase regionserver 老挂掉

 hbase regionserver 老挂掉: 添加如下: &lt;property&gt;&lt;name&gt;hbase.regionserver.restart.on.zk.expire&lt;/name&gt;&lt;value&gt;true&lt;/value&gt;&lt;description&gt;Zookeeper session expired will force ...

weixin_34315665的博客 141

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

CDH下No jar path specified for org.apache.phoenix.coprocessor.ScanRegionObserver导致Hbase出现RIT异常

描述: Hbase有配HA,在运行了一段时间之后Master会自动挂掉,CM报Master有以下问题 之后通过CM跳转到Hbase的Web UI界面发现如下: 有一个Regions server报错,此Regions server是最近新增加的新节点,老节点正常 解决方法: 1.到对应Regions server上查看出问题时间点的日志,发现报以下问题 Failed to load coprocessor org.apache.phoenix.coprocessor.ScanReg.

u010608720的专栏 726

Hbase重启后, RegionServer自动挂机(七)

查看RegionServer所在节点是否一致,不一致的话同步时间,重启Hbase解决。

徐小慧_Blog的博客 292

记录一次线上Hbase2.1.0版本RegionServer节点无故挂掉,且无日志输出

etc/abrt下的两个文件,分别是:abrt-action-save-package-data.conf 和 abrt.conf,修改内容如下。我们后面排查的时候去查看/run/cloudera-scm-agent/process/2325-hbase-REGIONSERVER下是否有。发现有个hs_err_pid15967.log JVM生成的错误日志,那么把这个日志下载查看,返现日志这么写的。接下来就等下一次hbase的节点挂了之后查看转储文件,转储文件在/var/sqool/abrt下。

yzw_ai_sx的博客 1434

HBase–RegionServer宕机恢复原理

Region Server宕机总述 HBase一个很大的特色是扩展性极其友好,可以通过简单地加机器实现集群规模的线性扩展,而且机器的配置并不需要太好,通过大量廉价机器代替价格昂贵的高性能机器。但也正因为廉价机器,由于网络硬盘等各方面的原因,机器宕机的概率就会相对比较大。RegionServer作为HBase集群中实际的执行节点,不可避免地也会出现宕机。 宕机并不十分可怕,因为不会丢数据

范斐斐 2364

Hbase regionserver 启动不了的解决方案

尝试重启节点Hmaster节点执行 bin/graceful_stop.sh --restart --reload --debug '节点名'挂掉节点执行 /bin/hbase-daemon.sh start regionserver两种方式都失败查看日志less -R hbase-hadoop-regionserver-xxx.log java.io.IOException: Connection

lisong_ghost的博客 8743

监控hbase的regionserver服务是否挂掉,并重启

监控脚本 #shell hbaseregionexists = `ps aux|grep hbase.regionserver.HRegionServer | grep -v grep | wc -l` hbaseregionpid = `ps aux|grep hbase.regionserver.HRegionServer | grep -v grep | awk '{ print $2...

qq_27255679的博客 745

Hbase region 某个regionserver挂掉后的处理

ALTER TABLESPACE TB_USER_4K EXTEND(FILE '/data/vd5/TB_USER_4K.tbs' 10240)tail -f /var/cloud/logs/hbase/hbase-???-regionserver-d164.logtail -f  /var/cloud/logs/hbase/hbase-????-regionserver-d198.log/...

weixin_34341229的博客 383

Hbase因HostName引发的事故

Hbase因HostName引发的事故

weixin_47099283的博客 628

Hbase-启动后RegionServer由于时间不同步自动挂掉

查看挂掉的节点hdp-node-02日志 [root@hdp-node-02 logs]# cat hbase-root-regionserver-hdp-node-02.log 2017-08-23 17:00:59,154 FATAL [regionserver/hdp-node-02/192.168.33.102:16020] regionserver.HRegionServer: Mas

知行合一,止于至善 1212

Hbase服务启动后HMaster和HRegionServer不一会儿就自动挂掉的解决方法

Hbase服务启动后Hmaster和HRegionServer不一会儿就自动挂掉的解决方法 我的问题如下图 启动后jps是这样的 过了一会儿jpsHmaster和HRegionServer就饿挂掉了 查看hbase日志 然后百度看了很多解决方法,最后原来是没有关闭防火墙 systemctl start firewalld开启 systemctl status firewalld 查看状态 systemctl stop firewalld关闭 然后我关了后就不会再自动挂掉了,希望能帮助到大家 ..

F_lan123的博客 2143
上一篇: grafana+prometheus监控tomcat项目
下一篇: 使用clickhouse kafka表引擎消费kafka写入clickhouse
冰帆<
博客等级 码龄21年 3577粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰帆<

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值