0

我正在尝试使用 thrift/hbase 从放置在那里的 HDFS 中提取数据到 Hive 表中,但我正在努力寻找以下错误消息的解决方案;

ERROR client.HConnectionManager$HConnectionImplementation (HConnectionManager.java:checkIfBaseNodeAvailable(751)) 
– Check the value configured in ‘zookeeper.znode.parent’. There could be a mismatch with the one configured in the master.

其次是;

FAILED: Error in metadata: MetaException(message:org.apache.hadoop.hbase.MasterNotRunningException

从 hive 终端运行以下查询后,这些错误出现在 hive 日志中;

create external table d_table (id bigint, date string) 
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler’ 
with serdeproperties (“hbase.columns.mapping” = “:key,a:date”) 
TBLPROPERTIES (“hbase.table.name” = “demo_table”);

该表存在,已填充并且可以从 hbase shell 中找到,并且我检查了 HMASTER 进程是否正在运行。'zookeeper.znode.parent' 设置为默认值,并且 hbase 接受这一点(如果更改,hbase 会抱怨,所以我相当有信心它是正确的)。我能够毫无问题地建立一个 ZK 客户端。

我已经达到了研究这个问题的地步,我被告知解决方案是针对我正在使用的 HBase 版本重新编译 Hive,这有点违背了使用发行版的意义。ZK 和 HBase 主控器位于我从中运行 HiveQL 命令的同一台机器上。

如果我从另一台机器运行查询,我会看到以下内容;

ERROR client.HConnectionManager$HConnectionImplementation 
(HConnectionManager.java:checkIfBaseNodeAvailable(751)) 
– Check the value configured in ‘zookeeper.znode.parent’. There could be a mismatch with the one configured in the master.

WARN zookeeper.ClientCnxn (ClientCnxn.java:run(1089)) 
– Session 0×0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)
at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)
WARN zookeeper.RecoverableZooKeeper (RecoverableZooKeeper.java:retryOrThrow(219)) 
– Possibly transient ZooKeeper exception: 
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = 
ConnectionLoss for /hbase/hbaseid

如果我将属性添加到 zookeeper.quorum 的 hive-site.xml 文件,我会得到与第一台机器相同的行为。我从 Ambari 获取了 zookeeper.quorum 的值。

我正在使用 Hortonworks 1.3 发行版。我们已经成功地使用 HCatalog 运行 Hive 来创建表等,并且我们已经运行了各种其他场景。如果需要更多信息来提供帮助,请告诉我,我想保持这篇文章的清洁。

提前致谢

4

2 回答 2

0

我在 java 中与 Hbase 通信时遇到了同样的错误。当我添加以下配置时,它确实得到了解决。

conf.set("zookeeper.znode.parent", "/hbase-unsecure");

希望有帮助

于 2014-03-27T13:12:08.220 回答
0

您可以检查 zookeeper 服务端口。我不确定您是否使用独立的 Zookeeper 集群。如果不是,可能是其他进程占用了 2181 端口,hbase 会尝试使用 2182 端口启动 zookeeper。如果服务端口不是 2181,Hive 会报错,没有具体配置。

于 2013-08-11T05:06:42.257 回答