0

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

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

但它没有通过,EMR 在配置步骤中失败,只有消息

在主实例 (instance-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 元存储的配置设置:

分类=hive-site,properties=[javax.jdo.option.ConnectionURL=jdbc:mysql://[host]:3306/[dbname]?createDatabaseIfNotExist=true,javax.jdo.option.ConnectionDriverName=org.mariadb.jdbc .Driver,javax.jdo.option.ConnectionUserName=[用户],javax.jdo.option.ConnectionPassword=[pass]]

4

1 回答 1

0

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

主要问题是 EMR 使用以下命令使用 MySQL 初始化模式:

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

对于我们的情况,这应该是 postgres。

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

1) 使用 hive 应用程序启动 EMR 集群,使用默认配置。

2)使用命令停止蜂巢:

sudo stop hive-server2

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

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

5)执行命令:

sudo /usr/lib/hive/bin/schematool -upgradeSchema -dbType postgres
于 2018-08-30T15:14:59.647 回答