Cloudera / Hive - 主机名更改后无法访问表

时间:2014-11-18 09:32:51

标签: hadoop hive cloudera hostname metastore

我创建了一个Cloudera集群,并从oracle DB导入了一些示例测试文件。但过了一段时间我不得不改变节点的主机名。我按照cloudera网站上提到的指南,一切正常。但是当我尝试访问我之前创建的表(使用hive和impala)时,我收到以下错误: 获取结果会遇到以下错误:

java.io.IOException:java.lang.IllegalArgumentException:java.net.UnknownHostException:[Old Host Name]

然后我在同一个DB(使用Hue> Metastore Tables)下创建了另一个表,我可以访问在新主机名下创建的这些新表,没有任何问题。

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

2 个答案:

答案 0 :(得分:2)

没关系我找到了答案。

您可以通过执行

确认hive / impala正在寻找错误的位置
describe formatted [tablename];    

O / P

14  Location:               hdfs://[oldhostname]:8020/user/hive/warehouse/sample_07 NULL    

然后你可以改变"位置"财产使用:

ALTER TABLE sample_07 SET LOCATION "hdfs://[newhostname]:8020/user/hive/warehouse/sample_07";    

ps - sample_07是关注的表格

有时这不起作用!!

上面的解决方法适用于默认情况下可用的示例表,但我有另一个表格,我从外部数据库扩展到客户的Metastore数据库,这再次给了我一个类似于上面的错误。

解决方案:

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

执行' ALTER TABLE ....'在hive shell(或web界面)

从/ etc / hosts

中删除oldhostname条目

答案 1 :(得分:1)

试试这个

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

您可以参考https://www-01.ibm.com/support/knowledgecenter/SSPT3X_3.0.0/com.ibm.swg.im.infosphere.biginsights.trb.doc/doc/trb_inst_hive_hostnames.html