在Cloudera CDH5.5上安装Apache Phoenix遇ZooKeeper连接错误求助
这个问题我在CDH环境部署Phoenix时也碰到过,核心是ZooKeeper和HBase的连接路径或者服务状态出了问题,给你几个针对性的排查和解决步骤:
检查ZooKeeper服务是否正常运行
先确认ZK集群的状态,在每个ZK节点上执行命令:zkServer.sh status确保所有节点要么是
leader要么是follower状态,没有节点处于down状态。如果有ZK节点故障,先修复ZK服务。修正HBase在ZK中的根路径参数
CDH默认情况下,未启用Kerberos的HBase集群在ZK中的根节点不是原生HBase的/hbase,而是/hbase-unsecure。你执行的命令里没有指定正确的ZK根路径,导致Phoenix找不到HBase的注册节点。修改命令为:./psql.py <zk-host>:2181:/hbase-unsecure ../examples/WEB_STAT.sql ../examples/WEB_STAT.csv ../examples/WEB_STAT_QUERIES.sql如果你的集群启用了Kerberos,根路径通常是
/hbase-secure,可以通过Cloudera Manager的HBase配置页面查看hbase.zookeeper.znode.parent参数确认。验证ZK中HBase节点的可用性
用ZK客户端连接到集群,检查HBase的注册节点:zkCli.sh -server <zk-host>:2181在ZK客户端里执行:
ls /确认能看到对应的HBase根节点(比如
/hbase-unsecure),再执行:ls /hbase-unsecure如果能看到
meta、master等节点,说明HBase已正确注册到ZK;如果看不到,需要重启HBase服务,让它重新向ZK注册。确认Phoenix与CDH版本兼容性
CDH5.5对应的Phoenix版本必须是4.7.0-cdh5.5.0,不能使用原生Apache Phoenix版本,否则会出现依赖冲突导致连接失败。确保你安装的是Cloudera定制的Phoenix版本。检查Phoenix客户端的HBase配置
确保Phoenix客户端的conf目录下有正确的hbase-site.xml文件,里面的以下参数必须和集群HBase的配置一致:hbase.zookeeper.quorum:ZK集群的节点列表hbase.zookeeper.property.clientPort:ZK的客户端端口(默认2181)hbase.zookeeper.znode.parent:HBase在ZK中的根路径(比如/hbase-unsecure)
如果没有这个配置文件,Phoenix会使用默认值,导致连接错误。
排查网络与防火墙问题
确保执行psql.py的机器能访问ZK集群的2181端口,用以下命令测试连通性:nc -zv <zk-host> 2181如果连接失败,检查机器的防火墙、安全组规则,确保端口没有被拦截。
补充:你遇到的错误日志里明确提到
KeeperErrorCode = ConnectionLoss for /hbase,这说明Phoenix默认去连接/hbase节点,但CDH环境里这个节点不存在,所以第一步优先修正ZK根路径参数,大概率能解决问题。
内容的提问来源于stack exchange,提问作者Harshit Mehta

