EMR Hive服务默认使用明文保存密码来访问本地MySQL或RDS MySQL,但也可以使用加密文件来访问这些数据库。本文为您介绍如何使用加密文件访问RDS MySQL。
前提条件
- 已创建集群,并且选择了Hive服务,详情请参见创建集群。 
- 已购买RDS,详情请参见快速创建RDS MySQL实例。 
操作步骤
- 创建凭据文件。 重要- 如果集群中有多个Master节点,需要进行多次操作。 - 通过SSH方式连接Master节点,详情请参见登录集群。 
- 执行以下命令,生成Hadoop Credential文件。 - hadoop credential create javax.jdo.option.ConnectionPassword \ -provider jceks://file/tmp/hive.jceks- 请根据提示输入两次RDS MySQL用户的密码。 
 
- 执行以下命令,将凭据文件移动到Hive的配置文件目录,并将该文件的所有者更改为hive用户或hadoop用户。 - DataLake或Custom集群类型- sudo mv /tmp/hive.jceks $HIVE_CONF_DIR sudo chown hive $HIVE_CONF_DIR/hive.jceks- Hadoop集群类型- sudo mv /tmp/hive.jceks $HIVE_CONF_DIR sudo chown hadoop $HIVE_CONF_DIR/hive.jceks
- 在EMR控制台目标集群Hive服务的配置页签,在hivemetastore-site.xml中修改和新增以下配置项,并确保配置项生效。修改、新增和生效配置项的具体操作请参见管理配置项。 - DataLake或Custom集群类型- 操作 - Key - Value - 说明 - 修改 - javax.jdo.option.ConnectionPassword - 设置为空 - 表示连接Hive Metastore时不需要提供密码。 - 新增 - hadoop.security.credential.provider.path - jceks://file/etc/emr/hive-conf/hive.jceks - 用于指定Hadoop Credential文件的路径。 - Hadoop集群类型- 操作 - Key - Value - 说明 - 修改 - javax.jdo.option.ConnectionPassword - 设置为空 - 表示连接Hive Metastore时不需要提供密码。 - 新增 - hadoop.security.credential.provider.path - jceks://file/etc/ecm/hive-conf/hive.jceks - 用于指定Hadoop Credential文件的路径。