View a markdown version of this page

将 Oozie 与 Amazon RDS 中的远程数据库结合使用 - Amazon EMR

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

将 Oozie 与 Amazon RDS 中的远程数据库结合使用

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

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

创建外部 MySQL 数据库
  1. 在 https://console.aws.amazon.com/rds/ 处打开 Amazon RDS 控制台。

  2. 选择 Launch a DB Instance (启动数据库实例)。

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

  4. 保留 “Multi-AZ 部署和预配置 IOPS 存储” 的默认选择,然后选择 “下一步”。

  5. 保留 Instance Specifications(实例规格)的默认值,指定 Settings(设置),然后选择 Next(下一步)。

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

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

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

要在使用 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-7.14.0 --applications Name=Oozie Name=Spark Name=Hive \ --instance-type m5.xlarge --instance-count 3 \ --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json --use-default-roles

    下面显示的是 myConfig.json 文件的内容示例。将JDBC URLusername、和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": "org.mariadb.jdbc.Driver", "oozie.service.JPAService.jdbc.url": "JDBC URL", "oozie.service.JPAService.jdbc.username": "username", "oozie.service.JPAService.jdbc.password": "password" }, "Configurations": [] }]