1. 集群环境
- HDFS配置了HA
- Hive的自定义函数在HDFS没配置HA之前创建的
- Hive的元数据有Mysql管理
2. 配置双NameNode
cdh01
cdh05
3. 当NameNode从cdh01切换到cdh05后,Hive自定义的函数使用报错
原因:
在 Hive 元数据库中保存了原来的NameNode(cdh01)的路径,而不是HA组成的Cluster(nameservice1)的路径
4. 解决方法
-
进入Hive的元数据库,里面找到三张表
DBS:Hive数据默认路径
SDS:Hive数据自定义路径
FUNC_RU:Hive自定义函数的路径
-
将 DBS,SDS,FUNC_RU 三张表中的路径由 cdh01:8020 替换成 nameservice1
修改DBS
update DBS set DB_LOCATION_URI=REPLACE (DB_LOCATION_URI,'cdh01:8020','nameservice1');
修改SDS
update DBS set LOCATION=REPLACE (LOCATION,'cdh01:8020','nameservice1');
修改FUNC_RU
update FUN_RU set RESOURCE_URI = REPLACE(RESOURCE_URI,'cdh01:8020','nameservice1');