zoukankan      html  css  js  c++  java
  • 报错:关闭HBase时无法找到Master:no hbase master found(完美解决)

    报错现象

    关闭HBase的时候,报错:no hbase master found

    但是此时我可以确定 HMaster 处于存活状态,而且hadoop和zookeeper也都运行正常。

    报错原因

    此时可以大体确定报错原因,系统找不到HBase的pid文件,pid文件里面是HBase的进程号,找不到进程号系统就没有办法去结束这个进程。

    HBase的pid文件默认存放路径为 /tmp 路径,可以进去看一下有没有和HBase相关的文件。肯定没有,因为很有可能被操作系统删掉了。

    报错解决

    (1)修改pid文件存放路径

    进入 /opt/hbase-2.0.0/conf 目录,找到 hbase-env.sh 进行修改

    将文件中的对应行修改(大约119行左右)

    export HBASE_PID_DIR=/var/hbase/pids

    路径可以按照自己的习惯指定,但是一定要放在一个安全的地方,不要动不动就被linux系统抓了壮丁删掉。

    (2)暴力解决(测试环境使用)

    直接kill掉HBase的相关进程,重启服务就行了,重启之后新的pid就会在指定目录下生成,相同的问题以后也就不会出现了。

    如果是测试环境可以使用这种简单粗暴的方法,小几率会造成丢数据或者HBase无法启动的情况,但是解决问题简单、快速。

    (3)安全解决(生产环境使用)

    如果节点机器上有HMaster、HRegionServer两个进程,需要添加的文件如下:

    hbase-root-master.pid
    hbase-root-master.znode
    hbase-root-regionserver.pid
    hbase-root-regionserver.znode
    如果节点机器上只有HRegionServer进程,需要添加的文件如下:

    hbase-root-regionserver.pid
    hbase-root-regionserver.znode

    第一步:在HBase未关闭的情况下再去启动HBase,使其生成pid存放目录(主节点)

    第二步:添加hbase-root-regionserver.pid文件(在包含HRegionServer的节点执行此操作)

    查看HRegionServer的进程号,进程号就是pid文件里面的内容,直接复制进去保存。

    将进程号记下来,去/var/hbase/pids目录下创建一个名为 hbase-root-regionserver.pid 的文件,

    将进程号37821(根据自己情况,不要复制我的)复制进去,保存退出。

    第三步:添加hbase-root-regionserver.znode文件(在包含HRegionServer的节点执行此操作)

    进入zookeeper客户端:

    [root@c202pc1 pids]# zkCli.sh

    [zk: localhost:2181(CONNECTED) 8] ls /hbase/rs/c202pc1,16020,1593770260358  # 一直点Tab键(不要太死板,偶尔点个/键),就会出来一串字符

    host:c202pc1

    port:16020

    startcode:1593770260358

    /var/hbase/pids目录下创建一个名为 hbase-root-regionserver.znode 的文件,将/hbase/rs/c202pc1,16020,1593770260358(根据自己情况,不要复制我的)复制进去,保存退.出。

    第四步:添加hbase-root-master.pid文件(在包含HMaster的节点执行此操作)

    查看HRegionServer的进程号,进程号就是pid文件里面的内容,直接复制进去保存。

    将进程号记下来,去/var/hbase/pids目录下创建一个名为 hbase-root-master.pid 的文件,将进程号37693(根据自己情况,不要复制我的)复制进去,保存退出。

    第五步:添加hbase-root-master.znode文件(在包含HMaster的节点执行此操作)

    /var/hbase/pids目录下创建一个名为 hbase-root-master.znode 的文件,将c202pc1,16000,1593770258927(根据自己情况,不要复制我的)复制进去,保存退出。

    host:c202pc1

    port:16000

    startcode:1593770258927 (这里随便打几个数字就可以,因为我没有在zookeeper中找到这串字符,但是发现随便输入一串数字也不会报错。)

    第六步:重启

    先关HBase

    再关Hadoop

    再关Zookeeper

    再按照相反顺序启动即可。

  • 相关阅读:
    java 分割
    我就骂你了,我tm还想打你呢
    就两个人,怎么搞管理?
    年底得了个公司奖金,但是我却高兴不起来
    Microsoft.VisualStudio.TestTools.UnitTesting 命名空间
    Python2.7.6标准库内建函数
    几种xml读取方法比较
    无论怎么样都不能成为你对别人发脾气的理由
    【产品策划】在移动互联网时代的多媒体社交
    DES加密 超详解 及 C++编程实现
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/13358872.html
Copyright © 2011-2022 走看看