hadoop - HBase 全分布式模式 [执行 HBase shell 时出现 Zookeeper 错误]
问题描述
遵循这两个教程:即教程 1和教程 2,我能够以完全分布式模式设置 HBase 集群。最初集群似乎工作正常。
HMaster/Name 节点中的“jps”输出
DataNodes/RegionServers 中的 jps 输出
然而,当我每次尝试执行 hbase shell 时,似乎 HBase 处理器由于一些 Zookeeper 错误而中断。错误粘贴在下面:
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│
我尝试了几次尝试来解决这个问题(包括尝试使用不同的HBase/Hadoop 兼容版本)。但仍然没有进展。
想听听你的意见。
以下是所需的其他信息:
- 在
/etc/hosts
文件中:
(我已经尝试在 /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 相关的端口。 - 安装后不要启动 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
帮助我找出确切的错误。
推荐阅读
- python - Tensorflow - 如何让聊天机器人使用已经训练过的模型/加载模型时出错
- android - 奇怪的BLE连接状态
- ios - 想从 firebase 获取数据
- sparql - SPARQL 多图请求和排序 (Virtuoso 7)
- go - Google Directory API 添加自定义架构/将其更新到每个 google API 的用户(进行中)
- kubernetes - 限制范围中的资源限制和资源最大值有什么区别?请求与分钟?
- elasticsearch - 在 kibana 6 中创建可视化的 Java api
- html - 如何创建一个输入值为日期的表单,并创建日期的永久链接,例如。example.com/dd-mm-yy 提交后
- php - PHP json_decode 在本地服务器上运行不佳,但在 Web 服务器上运行良好
- html - WPF:从应用程序调用 HTML 文件