最先Hadoop的NameNode是没有配置HA的,后面配置了HA后发现NameNode发生切换以后表仍是不能正常查询了,通过DESCRIBE formatted xxx
以后发现,配置过HA以后新建的表的Location仍然是数据库
hdfs://host:8020/user/hive/warehouse/xxx.db/xxx
而不是配置的Nameservice
名称bash
通过排查发现配置HA以后新建的数据库里的表,在发生NameNode切换以后仍然能正常查询,推测多是跟hive的元数据库有关。ide
查看hive元数据库里的DBS
表
果真问题出在这里。oop
将上表里的cdh01:8020
改成NameNode
的Nameservice
名称。
这样是解决了日后新建的表的问题,那么修改以前的表在NameNode发生切换后,仍是不能正常读取。
那就要改SDS
表中的LOCATION
字段里的值了:
使用以下SQL便可:spa
UPDATE SDS set LOCATION=REPLACE(LOCATION,'cdh01:8020','nameservice1')