当前位置:   article > 正文

由于hadoop高可用状态切换,导致hive在指定数据库下建立以及读取表失败_hdfs关闭高可用之后hive表无法查询

hdfs关闭高可用之后hive表无法查询

问题描述:因为cdh集群,hadoop启用了HA高可用,之前node1节点为active,现在变成了node2节点为standby。而且之前hive建库的时候,LOCATION=hdfs://node1:8020/user/warehouse/dir.....

导致库里面的表默认都是获取DB的location来拼接的表的hdfs路径。

由于切换成了standby后,读取表的时候,报READ IS NOT

SUPPORT in state standby。就是从机器不允许读写。 

定位:由于配置文件hive-site.xml、core-site.xml、hdfs-site.xml等有关配置文件都替换了最新,都是配置了hdfs://高可用地址/

因为通过hivemetastore去连接创建表,所以排查了日志。在FlieUtils这行显示了不是集群地址的路径。由hivemetastore类去调用了fileutils方法 

于是最后,翻看了hive的源码,在下面看出:

这个方法下面:

进入wh(warehouse类).getTablePath() 

这个地方由含义就知道获取的databasepath的数据库的location。

于是就去查看hive的建库语句

hive>show create database rtp_data;

显示确实是单机的地址

 

解决:

修改库的location地址即可:

alter database <my_db> set location '<new_hdfs_loc>';

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/438263
推荐阅读
相关标签
  

闽ICP备14008679号