在Postgresql上为EMR设置Remote Hive Metastore

时间:2018-08-30 10:59:24

标签: amazon-emr hive-metastore

我正在尝试将postgresql db设置为AWS EMR的外部Hive元存储。 我曾尝试将其托管在EC2和RDS上。

我已经尝试过here给出的步骤。

但是它没有通过,EMR仅在带有消息的情况下失败

  

在主实例(实例ID)上,应用程序设置失败

我无法从故障日志中解密任何内容。

我还在路径中复制了postgresql jdbc jar

  

/ usr / lib / hive / lib /和/ usr / lib / hive / jdbc /   如果EMR还没有,但是仍然没有帮助!

然后我通过手动编辑hive-site.xml并设置属性来设置系统:

javax.jdo.option.ConnectionURL
javax.jdo.option.ConnectionDriverName
javax.jdo.option.ConnectionUserName
javax.jdo.option.ConnectionPassword
datanucleus.fixedDatastore
datanucleus.schema.autoCreateTables

并且必须运行hive --service metatool -listFSRoot

完成这些手动设置后,我可以使用EMR来将postgres db用作远程元存储。

有什么办法可以使用官方文档中提到的配置文件使它正常工作?

编辑: 我用于远程mysql metastore的配置设置:

分类=蜂巢站点,属性= [javax.jdo.option.ConnectionURL = jdbc:mysql:// [主机]:3306 / [dbname]?createDatabaseIfNotExist = true,javax.jdo.option.ConnectionDriverName = org。 mariadb.jdbc.Driver,javax.jdo.option.ConnectionUserName = [user],javax.jdo.option.ConnectionPassword = [pass]]

1 个答案:

答案 0 :(得分:0)

在EMR启动时,我永远找不到一种干净的方法来配置它。

主要问题是EMR使用以下命令通过MySQL初始化架构:

/usr/lib/hive/bin/schematool -initSchema -dbType MySQL

对于我们的案例应该是postgres。

以下手动步骤允许您将postgres配置为外部metastore:

1)在默认配置下,通过配置单元应用程序启动EMR集群。

2)使用命令停止配置单元:

sudo stop hive-server2

3)将postgresql-jdbc jar(存储在S3的某些位置)复制到EMR上的/usr/lib/hive/lib/

4)用包含在EC2节点上运行的Postgresql的JDO配置的自定义项覆盖/usr/lib/hive/conf/中的默认hive-site.xml。

5)执行命令:

sudo /usr/lib/hive/bin/schematool -upgradeSchema -dbType postgres