最先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')