设置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 WARN zookeeper.ClientCnxn:服务器空的会话0x0,意外错误,关闭套接字连接并尝试重新连接java.net.ConnectException:连接被拒绝在org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)的sun.nio.ch.SocketChannelImpl.finckConnect(SocketChannelImpl.java:592)的sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) . 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: Build 到localhost / 127.0.0.1的套接字连接:2181,启动会话13/08/23 15:40:05 WARN zookeeper.RecoverableZooKeeper:可能是瞬态ZooKeeper异常:org.apache.zookeeper.KeeperException $ ConnectionLossException:KeeperErrorCode = ConnectionLoss for / hbase / hbaseid 13/08/23 15:40:05 INFO util.RetryCounter:在重试#1之前休眠2000ms . ..
所以它试图连续600秒然后返回
任务attempt_xxx无法报告状态60秒 . 杀!
经过几次尝试后,它会更改节点,如果新节点偶然属于zookeeper列表,则作业将以成功完成 .
这是正常的吗?
我最终将所有节点添加到zookeeper列表中,但我想知道它是否是一个好习惯 . 还有区域服务器列表应该与节点列表不同的任何地方吗?
谢谢
1 回答
不,它看起来不像你正在做的是一个好习惯 . 对于16个RS群集,1个ZK节点应该没问题 .
看看ZK Admin guide:
虽然它没有说明,但ZK集群应该不超过7个节点 . 鉴于奇数节点的建议,留下了1,3,5和7的选项 . 再次对于像你这样的小集群,1应该足够,但3将为你提供弹性 . 5可能是矫枉过正 . 肯定是7 .
另外,查看您粘贴的错误:
这似乎表明:
Hadoop配置错误:您指向错误的服务器/端口,或者服务当前未运行,或者更可能 -
网络配置错误,例如像iptables一样运行的防火墙