克隆EMR集群时,进行配置失败的问题
首先
由于Amazon EMR(弹性MapReduce)遇到问题,因此在此共享。
问题可能是由2018年3月左右的更新引起的。
(在https://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-release-components.html 上找不到相关信息)
根据以下条件应该发生
-
- RDSをhive metastoreとして利用している
-
- 起動に成功したクラスターをクローンして使う
- こんな設定jsonを書いている
[
{"classification":"hive-site",
"properties":{
"javax.jdo.option.ConnectionUserName":"hive",
"javax.jdo.option.ConnectionPassword":"password",
"javax.jdo.option.ConnectionURL":"jdbc:mysql://hoge.rds.amazonaws.com:3306/fuga_db"
}
}
]
在某些情况下会出现问题。
在我们公司,使用Hive进行大规模数据处理是EMR的常见用法之一。
在批处理失败时,我们通常会克隆失败的EMR集群以重新运行或者通过SSH进行调查。
然而,从大约2018年3月开始,克隆的EMR出现了无法成功配置的问题。
終了(エラー発生)On the master instance (i-xxxxxxxxxxxx), application provisioning failed
导致这种情况的原因
查看错误日志后,发现了以下的文本。
Underlying cause: java.sql.SQLInvalidAuthorizationSpecException : Could not connect: Access denied for user 'hive'@'10.1.34.46' (using password: YES)↲
SQL Error code: 1045↲
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.↲
at org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:77)↲
at org.apache.hive.beeline.HiveSchemaTool.getConnectionToMetastore(HiveSchemaTool.java:144)↲
at org.apache.hive.beeline.HiveSchemaTool.testConnectionToMetastore(HiveSchemaTool.java:473)↲
at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:577)↲
at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:563)↲
at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1145)↲
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)↲
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)↲
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)↲
at java.lang.reflect.Method.invoke(Method.java:498)↲
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)↲
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)↲
Caused by: java.sql.SQLInvalidAuthorizationSpecException: Could not connect: Access denied for user 'hive'@'10.1.34.46' (using password: YES)↲
at org.mariadb.jdbc.internal.util.ExceptionMapper.get(ExceptionMapper.java:121)↲
at org.mariadb.jdbc.internal.util.ExceptionMapper.throwException(ExceptionMapper.java:69)↲
at org.mariadb.jdbc.Driver.connect(Driver.java:110)↲
at java.sql.DriverManager.getConnection(DriverManager.java:664)↲
at java.sql.DriverManager.getConnection(DriverManager.java:247)↲
at org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:73)↲
... 11 more↲
Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Could not connect: Access denied for user 'hive'@'10.1.34.46' (using password: YES)↲
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authentication(AbstractConnectProtocol.java:464)↲
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:428)↲
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:351)↲
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:664)↲
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:587)↲
at org.mariadb.jdbc.Driver.connect(Driver.java:105)↲
... 14 more↲
似乎无法连接到RDS。密码方面似乎有问题。
当确认克隆和复制的JSON时,大致会呈现如下的样子。
[
{"classification":"hive-site",
"properties":{
"javax.jdo.option.ConnectionUserName":"hive",
"javax.jdo.option.ConnectionPassword":"********",
"javax.jdo.option.ConnectionURL":"jdbc:mysql://hoge.rds.amazonaws.com:3306/fuga_db"
}
}
]
看起来密码已被隐藏成了星号。
因此,密码被怒斥为非“********”的样子。
当我正确指定了JSON密码时,它可以正常运行。