如何解决HBase 全分布式模式【Zookeeper 在执行 HBase shell 时出错】
按照这两个教程:即 tutorial 1 和 tutorial 2,我能够在完全分布式模式下设置 HBase 集群。最初集群似乎工作正常。
HMaster/Name 节点中的 'jps' 输出
DataNodes/RegionServers 中的 jps 输出
然而,当我每次尝试执行 hbase shell 时,似乎 HBase 处理器由于某些 Zookeeper 错误而中断。错误粘贴如下:
Future _getImage() async {
final pickedFile =
await widget.picker.getImage(source: ImageSource.gallery);
if (pickedFile != null) {
widget.setImage(File(pickedFile.path));
} else {
print('No image selected.');
}
}
我尝试了多次尝试来解决这个问题(包括尝试使用不同的 HBase/ Hadoop compatible versions)。但还是没有进展。
希望得到您的意见。
下面分享的是其他需要的信息:
- 在
2021-03-13 11:52:26,047 ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeeper exists failed a│1951 HRegionServer fter 4 attempts │hduser@master-vm:~$ 2021-03-13 11:52:26,048 WARN [main] zookeeper.ZKUtil: hconnection-0x4375b0130x0,quorum=137.4│ 3.49.59:2181,137.43.49.58:2181,137.43.49.50:2181,137.43.49.49:2181,baseZNode=/hbase Unable to│ set watcher on znode (/hbase/hbaseid) │ org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss│ for /hbase/hbaseid │ at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) │ at org.apache.zookeeper.KeeperException.create(KeeperException.java:51) │ at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045) │ at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.│ java:221) │ at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:417) │ at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:6│
文件中:
(我已经尝试在 /etc/hosts/ 中评论 HBase 相关主机,仍然没有工作)
- 在 hbase-site.xml 中
解决方法
经过 5 天的忙碌,我了解到出了什么问题。在这里发布我的解决方案。希望它也可以帮助其他一些开发人员。还要感谢@VV_FS 的评论。
在我的场景中,我使用了从外部挖掘的虚拟机。因此,有一定的防火墙和其他安全措施。如果您遵循类似的实验设置,这些步骤可能会对您有所帮助。
要设置 HBase 集群,请按照以下教程进行操作。
在完全分布式模式下设置 HBase 时的注意事项:
- 确保打开帖子中提到的所有端口。例如,使用
sudo ufw allow 9000 to open port 9000
。按照命令打开所有与运行 Hadoop 相关的端口。
在完全分布式模式下设置 Zookeeper 时的注意事项:
- 确保打开帖子中提到的所有端口。例如,使用
sudo ufw allow 3888 to open port 3888
。按照命令打开所有与运行 Zookeeper 相关的端口。 - DO 安装后不要启动 ZOOKEEPER 节点。 ZOOKEEPER 将在 HBASE 内部进行管理。因此,不要在这个阶段开始 ZOOKEEPER。
-
设置
hbase-site.xml
的值时,对60000
标签使用端口号hbase.master
,而不是60010
。 (感谢@VV_FS 在前面的讨论中指出这一点)。 -
确保打开帖子中提到的所有端口。例如,使用
sudo ufw allow 60000 to open port 60000
。按照命令打开所有与运行Zookeeper相关的端口。
[重要思想]:如果遇到错误,请始终参考 HBase 日志。就我而言,hbase-mater-xxxxx.log
和 zookeeper-master--xxx.log
帮助我找到了确切的错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。