4

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

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

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

我终止了我的集群..当我第二天回来时..我现在启动了新的集群,我做了以下,使用 MYDB;创建表 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 是我早期集群的名称节点

请让我知道需要覆盖哪些属性以避免此类错误?

4

2 回答 2

6

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

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

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

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

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

原因:

我们有一个用于集群的外部 Metastore,这样我们就可以摆脱集群并随时启动一个新的。如果有 'MANAGED' 表,Hive Metastore 仍然保留对旧集群的引用。

解决方案:

hive --service metatool -listFSRoot

hive --service metatool -updateLocation <新值> <旧值>

例如:

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

于 2017-12-12T20:18:14.587 回答
1

或者,您可以进入 AWS 控制台中的 Glue,转到数据库/默认值并编辑条目以在 Location 字段中更新 ip(这是 的输出hive --service metatool -listFSRoot

于 2019-01-23T00:01:10.357 回答