EMR集群中的外部hive Metastore问题

时间:2017-05-19 09:40:26

标签: hive emr metastore

我将EMR集群的hive Metastore指向外部MySQL RDS实例。 我创建了新的hive数据库“mydb”,我在hive.DBS表中获得了外部MySQL数据库的条目。

hdfs://ip-10-239-1-118.ec2.internal:8020 / user / hive / warehouse / mydb.db mydb hadoop USER

我还在mydb数据库下创建了新的hive表“mytable”。我在hive.TBLS中获得了外部MySQL数据库的条目。到目前为止一切都很好..

我终止了我的群集..当我第二天回来时......我推出了新群集 现在,我做了以下, 使用MYDB; create table mytable_2(id int); 我收到了以下错误,

执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。 MetaException(消息:异常:java.net.NoRouteToHostException无路由到ip-10-239-1-4.ec2.internal / 10.239.1.4到ip-10-239-1-118.ec2.internal:8020套接字超时异常失败:java.net.NoRouteToHostException:无主机路由;有关详细信息,请参阅:http://wiki.apache.org/hadoop/NoRouteToHost

注意:     IP 10.239.1.4是我当前的集群名称节点。     IP 10.239.1.118是我早期的集群名称节点

请告诉我需要覆盖哪些属性以避免此类错误?

2 个答案:

答案 0 :(得分:2)

我有同样的问题,并已修复。 ^ _ ^

hive> create table sales.t1(i int);
  

FAILED:执行错误,返回代码1   org.apache.hadoop.hive.ql.exec.DDLTask。 MetaException(消息:得到   exception:java.net.NoRouteToHostException

     

从ip-123-234-101-101.ec2.internal / 123-234-101-101无主机路由   到ip-111-111-202-202.ec2.internal:8020套接字超时失败   exception:java.net.NoRouteToHostException:没有到主机的路由;

     

有关详细信息,请参阅:http://wiki.apache.org/hadoop/NoRouteToHost

原因:

我们为集群安装了一个外部Metastore,这样我们就可以摆脱集群并随时启动新集群。如果存在“MANAGED”表,Hive Metastore仍会保留对旧集群的引用。

解决方案:

hive --service metatool -listFSRoot

hive --service metatool -updateLocation< new_value> < old_value>

E.g:

new_value = hdfs://ip-XXX.New.XXX.XXX:PORT / user / hive / warehouse
old_value = hdfs://ip-YYY.Old.YYY.YYY:PORT / user / hive / warehouse

答案 1 :(得分:1)

或者,您可以在AWS控制台中进入Glue,转到数据库/默认,然后编辑该条目以在“位置”字段(这是hive --service metatool -listFSRoot的输出)中具有更新的IP。