在 Amazon RDS 中将 Oozie 与远程数据库一起使用 - Amazon EMR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon RDS 中将 Oozie 与远程数据库一起使用

默认情况下,Oozie 用户信息和查询历史记录存储在主节点上的本地 MySQL 数据库中。或者,您可以使用存储在 Amazon S3 中的配置和 Amazon Relational Database Service(Amazon RDS) 中的 MySQL 数据库创建一个或多个启用 Oozie 的集群。这样,您就可以保留 Oozie 创建的用户信息和查询历史记录,而无需使 Amazon EMR 集群保持运行状态。我们建议使用 Amazon S3 服务器端加密来存储配置文件。

首先,为 Oozie 创建远程数据库。

创建外部 MySQL 数据库

  1. 通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 选择启动数据库实例。

  3. 选择 MySQL,然后再选择 Select (选择)

  4. 保留默认选择 Multi-AZ Deployment and Provisioned IOPS Storage (多可用区部署和预配置 IOPS 存储),然后选择 Next (下一步)

  5. 将实例规范保留为默认值,指定设置,然后选择 下一步

  6. 在 Configure Advanced Settings (配置高级设置) 页面上,选择正确的安全组和数据库名称。您使用的安全组必须至少允许从集群的主节点对端口 3306 进行入站TCP 访问。如果您此时尚未创建集群,则可以允许所有主机连接到端口 3306 并在启动集群后调整安全组。选择启动数据库实例。

  7. 从 RDS 控制面板中,选择 Instances (实例),然后选择您刚刚创建的实例。当您的数据库可用时,记下数据库名称、用户名、密码和 RDS 实例主机名。您将在创建和配置集群时用到此信息。

使用 AWS CLI 在启动集群时为 Oozie 指定外部 MySQL 数据库

要在使用 AWS CLI 启动集群时为 Oozie 指定外部 MySQL 数据库,请使用在创建 RDS 实例时记下的信息,以便使用配置对象配置 oozie-site

注意

您可以创建使用同一个外部数据库的多个群集,但是每个群集将共享查询历史记录和用户信息。

  • 使用 AWS CLI,创建安装了 Oozie 的集群,使用您创建的外部数据库并使用指定数据库属性的 Oozie 的配置分类引用配置文件。以下示例创建一个安装了 Oozie 的集群,该集群引用了 Amazon S3 中指定数据库配置的配置文件 myConfig.json

    注意

    包含了 Linux 行继续符 (\) 以提高可读性。可以在 Linux 命令中删除或使用它们。对于 Windows,请删除它们或将其替换为脱字号 (^)。

    aws emr create-cluster --release-label emr-5.32.0 --applications Name=Oozie Name=Spark Name=Hive \ --instance-type m5.xlarge --instance-count 3 \ --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json --use-default-roles

    下面显示了 myConfig.json 文件的内容示例。Replace JDBC URL, username, 和 password 替换为您的 RDS 实例的 JDBC URL、用户名和密码。

    重要

    JDBC URL 必须包括数据库名称作为后缀。例如,jdbc:mysql://oozie-external-db.xxxxxxxxxx.us-east-1.rds.amazonaws.com:3306/dbname

    [{ "Classification": "oozie-site", "Properties": { "oozie.service.JPAService.jdbc.driver": "com.mysql.jdbc.Driver", "oozie.service.JPAService.jdbc.url": "JDBC URL", "oozie.service.JPAService.jdbc.username": "username", "oozie.service.JPAService.jdbc.password": "password" }, "Configurations": [] }]