我将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是我早期的集群名称节点
请告诉我需要覆盖哪些属性以避免此类错误?
答案 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。