最近在给新机器配置hbase集群时候出现个问题。错误信息为:
ERROR: Can’t get master address from ZooKeeper; znode data == null

前期探索

  • 判断zookeeper问题
    根据错误信息描述,潜意识认为是zookeeper集群没有起来,就跑到集群中看错误信息,发现一个leader两个follwer正常运行。初步排除集群问题,然后根据网上的一些错误描述说是节点数据问题,需要删除data目录下的内容(除myid文件)然后重启,试之~ 无果。
  • hbase启动问题
    多次重启hbase和zookeeper集群,问题依旧。Can’t get master address from ZooKeeper; znode data == null
  • 找日志
    对于这种没有头绪的情况,一般都是去分析日志,这种中间件一般都会在安装根目录下存在log文件夹,然后我们可以发现很多日志文件,就找个最近更新的吧,然后tail 一下发现了错误信息,问题如下:
    在这里插入图片描述
    在这里插入图片描述
    根据错误信息分析一下,说是找不到8020端口,这里我们知道8020是hadoop下hdfs的相关端口于是查询hdfs运行状况,发现正常运行。在这里插入图片描述

解决方案如下:

然后初步判断是配置出问题了,所以去检查配置文件,habse的配置文件相对于hadoop配置文件少之又少,我们可以看到conf下的hbase-site.yml的

  <name>hbase.rootdir</name>
  <value>hdfs://hadoop-master/hbase-new</value>
  </property>

和hadoop配置core-site.yml比对一番

<property>
 <name> fs.default.name </name>
 <value>hdfs://hadoop-master:9000</value>
</property>

可以看到明显少写了端口,结合网上的一些情况最终初步判断是这个原因,于是修改hbase-site.yml的部分内容为:

  <name>hbase.rootdir</name>
  <value>hdfs://hadoop-master:9000/hbase-new</value>
  </property>

然后重启。如果配置环境变量了可以在任意目录下输入 hase shell,然后就会进入到hbase控制台,我们通过一个简单的命令查看所有表
list,结果如下:
在这里插入图片描述
可以发现不在报错,把所有表都列出来了,这里由于我是新装的,所以没有,我们可以手动创建一个表

create 'userinfo' 'family' 'work';
list;

可以发现创建成功。
在这里插入图片描述

总结:

  • 检查zk集群是否启动成功
  • 尝试删除一下zk data目录下的数据(除myid文件)然后重启
  • 查看错误日志
  • 根据日志进一步定位问题
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐