0

设置 regionserver 和 zookeeper quorum 的好习惯是什么?

我有一个带有 16 个节点的小型 hadoop 集群。按照http://hbase.apache.org/book/example_config.html中给出的示例,我选择 16 个节点作为 regionserver,并将这些节点的一个子集作为 zookeeper。

但是,当一个作业由不在与 hbase.zookeeper.quorum 对应的列表中的节点启动时,我收到以下错误:

13/08/23 15:40:05 INFO zookeeper.ClientCnxn:打开与服务器 localhost/0:0:0:0:0:0:0:1:2181 的套接字连接。不会尝试使用 SASL 进行身份验证(未知错误) 13/08/23 15:40:05 WARN zookeeper.ClientCnxn:服务器 null 的会话 0x0,意外错误,关闭套接字连接并尝试重新连接 java.net.ConnectException:连接被拒绝sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:592) at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350) at org. apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068) 13/08/23 15:40:05 信息 zookeeper.ClientCnxn:打开与服务器 localhost/127.0.0.1:2181 的套接字连接。

所以它尝试连接 600 秒然后返回

任务尝试_xxx 未能报告状态 60 秒。杀戮!

经过几次尝试后,它会更改节点,如果碰巧新节点属于 Zookeeper 列表,则作业会成功完成。

这是正常的吗?

我最终将所有节点添加到 zookeeper 列表中,但我想知道这是否是一个好习惯。另外,是否存在 regionserver 列表与节点列表不同的情况?

谢谢

4

1 回答 1

2

不,看起来你正在做的不是一个好习惯。对于 16 个 RS 集群,1 个 ZK 节点应该就可以了。

查看ZK 管理员指南

为了使 ZooKeeper 服务处于活动状态,必须有大多数可以相互通信的非故障机器。要创建可以容忍 F 台机器故障的部署,您应该指望部署 2xF+1 台机器。因此,由三台机器组成的部署可以处理一个故障,而由五台机器组成的部署可以处理两个故障。请注意,六台机器的部署只能处理两次故障,因为三台机器不是大多数。因此,ZooKeeper 部署通常由奇数台机器组成。

虽然那里没有说,但一个 ZK 集群应该不超过 7 个节点。鉴于建议的节点数为奇数,剩下的选项有 1、3、5 和 7。同样对于像您这样的小型集群,1 应该就足够了,但 3 会给您带来弹性。5可能是矫枉过正。7绝对是。

另外,查看您粘贴的错误:

java.net.ConnectException: Connection refused

这似乎表明:

  • Hadoop 配置错误:您指向了错误的服务器/端口,或者服务当前未运行,或者更有可能 -
  • 网络配置错误,例如运行 iptables 之类的防火墙
于 2013-08-23T14:18:56.660 回答