【问题标题】:HBase fully distributed mode [Zookeeper error while executing HBase shell]HBase 全分布式模式 [执行 HBase shell 时出现 Zookeeper 错误]
【发布时间】:2021-06-11 07:16:38
【问题描述】:

按照这两个教程:即tutorial 1tutorial 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 compatible versions)。但还是没有进展。

希望您对此发表意见。

以下是所需的其他信息:

  • /etc/hosts 文件中:

(我已经尝试在 /etc/hosts/ 中注释 HBase 相关主机,但仍然无效)

  • 在 hbase-site.xml 中

【问题讨论】:

  • 不要在 hbase-site.xml 和 regionservers 文件中使用 IP 地址,而是使用您在 /etc/hosts 中指定的主机名。此外,您在 regionservers 上的 jps 输出显示 HMaster 似乎有点奇怪。该进程应该只在主计算机上运行(除非您将主服务器与一个区域服务器放在一起)。 HQuorumPeer 进程也是如此(同样,除非您在同一地点)。
  • @VS_FF 感谢您的回答。但是,它不起作用。
  • 在您的 hbase-site.xml 中注意到另一件事:您的 hbase 主端口不正确。在 hbase.master 设置中,我希望端口为 60000。使用当前设置,您可能会将其与 16010 混淆,后者是 web ui 的主端口(但您不必在任何地方进行配置) .
  • 我也看到你的 zookeeper dataDir 在 HDFS 中。从来没有这样尝试过,所以不确定它是否可以工作(我通常使用磁盘上的一些本地目录)。
  • 不确定我是否知道有关设置集群的全面的好帖子。是的,当然需要打开端口。您可以通过使用 telnet 并指定端口来测试您的机器是否可以在相关端口上相互通信。如果您看到连接已建立,那么您很好;否则你有问题。同样显然,它们都应该能够从主服务器进行 SSH。

标签: hadoop hbase apache-zookeeper


【解决方案1】:

经过 5 天的忙碌,我知道出了什么问题。在这里发布我的解决方案。希望它也可以帮助其他一些开发人员。还要感谢 @VV_FS 的 cmets。

在我的场景中,我使用了从外部方挖来的虚拟机。因此,有一定的防火墙和其他安全措施。如果您遵循类似的实验设置,这些步骤可能会对您有所帮助。

要设置 HBase 集群,请按照以下教程进行操作。

  1. Set up Hadoop in distributed mode

在完全分布式模式下设置 HBase 时的注意事项

  • 确保打开帖子中提到的所有端口。例如,使用sudo ufw allow 9000 to open port 9000。按照命令打开与运行 Hadoop 相关的所有端口。
  1. Set up Zookeeper in distributed mode.

在完全分布式模式下设置 Zookeeper 时的注意事项

  • 确保打开帖子中提到的所有端口。例如,使用sudo ufw allow 3888 to open port 3888。按照命令打开所有与运行 Zookeeper 相关的端口。
  • DO 安装后不要启动 ZOOKEEPER 节点。 ZookeePER 将在内部由 HBASE 管理。因此,不要在这个阶段开始 Zookeeper
  1. Set up HBase in distributed mode
  • hbase-site.xml 设置值时,将端口号60000 用于hbase.master 标记,而不是60010。 (感谢@VV_FS 在前面的讨论中指出这一点)。

  • 确保打开帖子中提到的所有端口。例如,使用sudo ufw allow 60000 to open port 60000。按照命令打开所有与运行 Zookeeper 相关的端口。

[重要提示]:如果遇到错误,请始终参考 HBase 日志。就我而言,hbase-mater-xxxxx.logzookeeper-master--xxx.log 帮助我找到了确切的错误。

【讨论】:

猜你喜欢
  • 2015-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多