如何选择zookeeper和regionserver

时间:2013-08-23 14:06:06

标签: hadoop hbase apache-zookeeper

设置regionserver和zookeeper仲裁的好方法是什么?

我有一个带有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警告   zookeeper.ClientCnxn:服务器null的会话0x0,意外错误,   关闭套接字连接并尝试重新连接   java.net.ConnectException:拒绝连接   sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)at   sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:592)     在   org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)     在   org.apache.zookeeper.ClientCnxn $ SendThread.run(ClientCnxn.java:1068)   13/08/23 15:40:05 INFO zookeeper.ClientCnxn:打开套接字连接   到服务器localhost / 127.0.0.1:2181。不会尝试进行身份验证   使用SASL(未知错误)13/08/23 15:40:05 INFO   zookeeper.ClientCnxn:建立套接字连接   localhost / 127.0.0.1:2181,发起会议13/08/23 15:40:05警告   zookeeper.RecoverableZooKeeper:可能是短暂的ZooKeeper   例外:   org.apache.zookeeper.KeeperException $ ConnectionLossException:   KeeperErrorCode = ConnectionLoss for / hbase / hbaseid 13/08/23 15:40:05   INFO util.RetryCounter:在重试#1之前睡眠2000毫秒......

所以它试图连续600秒然后返回

  

任务attempt_xxx无法报告状态60秒。杀死!

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

这是正常的吗?

我最终将所有节点添加到zookeeper列表中,但我想知道这是否是一个好习惯。还有区域服务器列表应该与节点列表不同的任何地方吗?

谢谢

1 个答案:

答案 0 :(得分:2)

不,看起来你所做的不是一个好习惯。对于16个RS群集,1个ZK节点应该没问题。

查看ZK Admin guide

  

要使ZooKeeper服务处于活动状态,   必须有大多数可以通信的非故障机器   彼此。创建可以容忍失败的部署   对于F机器,你应该指望部署2xF + 1台机器。因此,一个   由三台机器组成的部署可以处理一个故障,并且   部署五台机器可以处理两次故障。注意一个   部署六台机器只能处理三次以来的两次故障   机器不是多数。出于这个原因,ZooKeeper部署是   通常由奇数机器组成。

虽然它没有说明,但ZK集群不应该超过7个节点。鉴于奇数节点的建议,留下了1,3,5和7的选项。对于像你这样的小集群,1应该足够了,但3会给你弹性。 5可能是矫枉过正。肯定是7。

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

java.net.ConnectException: Connection refused

这似乎表明:

  • Hadoop配置错误:您指向错误的服务器/端口,或者服务当前没有运行,或者更有可能 -
  • 网络配置错误,例如运行iptables的防火墙