问题发现:hbase的映射到hive的表直接在安装了hive的命令中执行没有问题,但是通过hive的jdbc调用发现无法正常运行。集群机器为:master1,master2,dmp3,dmp4,dmp5,dmp6。zk安装在master1,master2,dmp3上。后查看任务调用情况有一部分container执行成功,大概多余1/4的task。查看日志发现dmp3的task都成功,但其它三台机器的task都失败了,日志提示是hbase无法连接ZK。
问题关键是:因为没有在jdbc调用时设置hbase的ZK配置,使得hbase默认去连的是当前机器的2181的ZK服务。而dmp4,dmp5,dmp6根本就没有安装ZK。
问题解决:
1、在调用JDBC时,传入设置hbase的ZK
SET hbase.zookeeper.quorum=zkNode1,zkNode2,zkNode3;
SET zookeeper.znode.parent=/hbase;
2、将hbase的配置文件存放到hive的配置文件路径下
有个疑问是:命令行却能读到hbase的zk配置?这是为什么。