Hive无法检测到当前的名称节点

时间:2019-02-04 10:44:50

标签: hadoop hive apache-zeppelin high-availability

我尝试通过Hive和Zeppelin请求Hive数据库,但出现此错误:

SemanticException Unable to fetch table table_name. org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.StandbyException): Operation category READ is not supported in state standby

我得到2个namenode:A和B 当A处于活动状态并且B处于斯坦比状态时,我可以毫无问题地请求我的表。

hdfs haadmin -getServiceState A
active
hdfs haadmin -getServiceState B
standby

如果我用:切换两种状态

hdfs haadmin -failover A B

A处于待机状态,B现在处于活动状态

hdfs haadmin -getServiceState A
standby
hdfs haadmin -getServiceState B
active

现在我的请求无法正常工作并收到错误消息:

SemanticException Unable to fetch table table_name. org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.StandbyException): Operation category READ is not supported in state standby

表明我的Hive已针对HA进行了正确配置:

hive --config /etc/hive/conf/conf.server --service metatool -listFSRoot
Listing FS Roots..
hdfs://HA-NAME/apps/hive/warehouse
hdfs://HA-NAME/apps/hive/warehouse/table1.db
hdfs://HA-NAME/apps/hive/warehouse/table2.db
...

但是在Hive中使用命令:show create table1,我得到: LOCATION ' hdfs://A/data/.... '

有问题的接缝来自名称节点B,或者Hive始终使用名称节点A作为活动名称节点,即使它处于备用状态也是如此。

我也使用HA名称将我的kafka连接到HDFS也没有问题。

1 个答案:

答案 0 :(得分:0)

通过将表从A迁移到HA名称解决了问题。

在我得到之前:

show create table1 
LOCATION ' hdfs://A/data/.... '

我删除了表hdfs文件,并以HA名称作为位置再次创建了它。

show create table1 
LOCATION ' hdfs://HA-NAME/data/.... '

它有效