修复hbase Shell里面的list命令不可用

进入Hbase Shell

1
hbase shell

使用list命令查看所有表时报错

1
2
3
4
5
6
7
8
9
10
11
12
13
hbase(main):001:0> list
TABLE

ERROR: Can't get master address from ZooKeeper; znode data == null

Here is some help for this command:
List all tables in hbase. Optional regular expression parameter could
be used to filter the output. Examples:

hbase> list
hbase> list 'abc.*'
hbase> list 'ns:abc.*'
hbase> list 'ns:.*'

重启Hbase

1
2
cd hbase-1.2.0-cdh5.7.0
bin/start-hbase.sh

重启后依旧报错,此时先关闭Hbase集群

1
2
bin/stop-hbase.sh 
stopping hbase...................

执行修复metadata命令

1
hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair

进入zookeeper command

1
bin/zkCli.sh
1
2
[zk: localhost:2181(CONNECTED) 0] ls /
[consumers, solr, yarn-leader-election, spark, controller_epoch, isr_change_notification, hbase, hadoop-ha, zookeeper, admin, config, kafka-manager, brokers]
1
[zk: localhost:2181(CONNECTED) 1] rmr /hbase

重启hbase集群

1
bin/start-hbase.sh

此时可以正常使用hbase shell,但是还有一个问题就是每次启动hbase的时候总会提示如下:

1
master running as process 12422. Stop it first.

第二种方案

如果第一种方案无法修复,那么就是第二种方案吧

1
2
3
4
5
6
在使用 Hbase shell 时,一直报错。花了半个多小时解决这个问题。解决如下:
1. 关闭Hadoop集群。
2. 格式化hdfs 进入Hadoop目录下 : bin/hdfs namenode -format //丢数据
3. 启动 hadoop集群
4. 启动 hbase集群
5. hbase shell status