【发布时间】:2017-01-14 19:58:39
【问题描述】:
我正在尝试将 hive-site.xml 配置为在 EMR 上的本地 MySQL 之外使用 MySQL。如何修改现有集群配置以从 S3 添加hive-site.xml?
【问题讨论】:
标签: mysql amazon-web-services amazon-s3 emr
我正在尝试将 hive-site.xml 配置为在 EMR 上的本地 MySQL 之外使用 MySQL。如何修改现有集群配置以从 S3 添加hive-site.xml?
【问题讨论】:
标签: mysql amazon-web-services amazon-s3 emr
我不确定“从 S3 添加 hive-site.xml”是什么意思。如果您只是想将文件从 S3 中取出并放入您的 conf 目录,您可以在登录到集群时使用 aws-cli 执行此操作,
aws s3 cp s3://path/to/hive-site.xml ~/conf
有关将现有 EMR 集群的 Hive MetaStore 迁移到 RDS 等外部服务的更详细说明,请参见下文
--
设置现有的 EMR 集群以查看外部 MySQL 数据库非常容易。首先,您需要转储在您的主节点上运行的 MySQL 数据库,以保留您现有的模式信息。假设您有大量的临时存储并且您的数据库套接字位于/var/lib/mysql/mysql.sock:
mysqldump -S /var/lig/mysql/mysql.sock hive > /media/ephemeral0/backup.sql
然后您需要将其导入到您的外部 MySQL 实例中。如果这是在 RDS 中,您首先需要创建 hive 数据库,然后将数据导入其中:
mysql -h rds_host -P 3306 -u rds_master_user -prds_password mysql -e "create database hive"
和,
mysql -h rds_host -P 3306 -u rds_master_user -prds_password hive < /media/ephemeral0/backup.sql
接下来,您需要创建一个用户供 hive 使用。登录到您的外部 MySQL 实例并执行以下语句(使用更好的用户名和密码):
grant all privileges on hive.* to 'some_hive_user'@'%' identified by 'some_password'; flush privileges;
最后,创建/对hive-site.xml 进行相同的更改,如您引用的文档中所述(填写正确的主机、用户和密码信息)并重新启动您的 MetaStore。要重新启动您的 MetaStore,请终止已经运行的 MetaStore 进程并启动一个新进程。
ps aux | grep MetaStore
kill pid
hive --service metastore&
【讨论】:
如果您在EMR 3.x,您可以使用您提供的链接中的方法(使用引导操作)。
如果您在ERM 4.x+ 中,则该引导操作不可用。你可以
EMR --configuration 使用xxx.json 文件添加自定义属性。好处很简单。缺点是您以这种方式添加的所有配置属性都将在aws web console 上,如果您在那里有元存储数据库凭据之类的东西,因为您使用的是外部元存储,这并不理想。 Step 以从S3 覆盖您的hive.xml,然后另一个Step 执行sudo reload hive-server2 以重新启动hive 服务器以获取新配置。【讨论】: