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

标签 hadoop hive cloudera hostname metastore

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

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

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

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

最佳答案

没关系,我找到了答案。

您可以通过执行来确认 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 是我关注的表

有时这不起作用!!

上述解决方法适用于默认情况下可用的示例表,但我有另一个表,我从外部数据库 sqooped 到客户元存储数据库,这再次给我带来了与上面类似的错误。

解决方案:

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

在 hive shell(或 Web 界面)执行“ALTER TABLE ....”

从/etc/hosts 中删除 oldhostname 条目

关于hadoop - Cloudera/Hive - 主机名更改后无法访问表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26990839/

相关文章:

hadoop - 需要用户选择/输入四分之一以在PIG-0.12.0中获得所需的输出

apache - 没有分区的 Hive 存储桶?

sql - 如何规范化配置单元中的列?

apache-spark - Kerberos Cloudera Hadoop 的 livy curl 请求错误

hadoop - 在 Hive 表中分区

java - MapReduce:结果不完整

sql - 从DOB计算年龄

hadoop - 使用Flume将推文写入HDFS不起作用

java - HBase:/hbase/meta-region-server 节点不存在

hadoop - 使用 map reduce 在 cassandra 中执行批量加载