Hadoop Cloudera/Hive-Can';主机名更改后无法访问表

Hadoop Cloudera/Hive-Can';主机名更改后无法访问表,hadoop,hive,cloudera,hostname,metastore,Hadoop,Hive,Cloudera,Hostname,Metastore,我创建了一个Cloudera集群,并从oracle DB导入了一些示例测试文件。但过了一会儿,我不得不更改节点的主机名。我遵循cloudera网站中提到的指南,一切都很顺利。但是,当我尝试访问之前创建的表(同时使用hive和impala)时,会出现以下错误: 获取结果时遇到以下错误: java.io.IOException:java.lang.IllegalArgumentException:java.net.UnknownHostException:[旧主机名] 然后我在同一个数据库下创建了另

我创建了一个Cloudera集群,并从oracle DB导入了一些示例测试文件。但过了一会儿,我不得不更改节点的主机名。我遵循cloudera网站中提到的指南,一切都很顺利。但是,当我尝试访问之前创建的表(同时使用hive和impala)时,会出现以下错误: 获取结果时遇到以下错误:

java.io.IOException:java.lang.IllegalArgumentException:java.net.UnknownHostException:[旧主机名]

然后我在同一个数据库下创建了另一个表(使用Hue>metastoretables),我可以毫无问题地访问在新主机名下创建的这些新表


有人能解释一下我如何在不恢复主机名的情况下访问我的旧表吗。我可以访问metastore db并将表指针更改为新主机名。

不管我找到了答案

您可以通过执行以下命令来确认蜂巢/黑斑羚正在寻找错误的位置

describe formatted [tablename];    
O/p

然后,您可以使用以下方法更改“位置”属性:

ALTER TABLE sample_07 SET LOCATION "hdfs://[newhostname]:8020/user/hive/warehouse/sample_07";    
ps-样本_07是相关表格中的一部分

有时这不管用!! 上面的解决方法适用于默认情况下可用的示例表,但我有另一个从外部数据库到custome metastore数据库的表,这再次给了我类似于上面的错误

解决方案:

转到已安装配置单元的主机。 临时将配置单元服务器的旧主机名添加到/etc/hosts(如果没有外部DNS,则新主机名和旧主机名应存在于同一主机文件中)

在配置单元外壳(或web界面)上执行“ALTER TABLE…”

从/etc/hosts中删除oldhostname条目

hive --service metatool -updateLocation <newfsDefaultFSValue> <old_fsDefaultFSValue>
hive—服务元工具—更新位置
你可以参考

hive --service metatool -updateLocation <newfsDefaultFSValue> <old_fsDefaultFSValue>