

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

# 将 Oozie 与 Amazon RDS 中的远程数据库结合使用
<a name="oozie-rds"></a>

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

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

**创建外部 MySQL 数据库**

1. 在 [https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/) 处打开 Amazon RDS 控制台。

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

1. 选择 MySQL，然后选择 **Select（选择）**。

1. 保留默认选择 **Multi-AZ Deployment and Provisioned IOPS Storage（多可用区部署和预调配 IOPS 存储)**，并选择 **Next（下一步）**。

1. 保留 Instance Specifications（实例规格）的默认值，指定 Settings（设置），然后选择 **Next（下一步）**。

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

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

**要在启动集群时使用 Oozie 指定外部 MySQL 数据库 Amazon CLI**

要在使用 Amazon CLI启动集群时为 Oozie 指定外部 MySQL 数据库，请在创建 RDS 实例时使用所记录的信息，以使用配置对象配置 `oozie-site`。
**注意**  
您可以创建使用同一个外部数据库的多个集群，但是每个集群将共享查询历史记录和用户信息。
+ 使用 Amazon CLI，创建安装了 Oozie 的集群，使用您创建的外部数据库，并引用指定数据库属性的具有 Oozie 配置分类的配置文件。以下示例创建一个安装了 Oozie 的集群，引用了 Amazon S3 中的配置文件 `myConfig.json`，该文件指定数据库配置。
**注意**  
为了便于读取，包含 Linux 行继续符（\\）。它们可以通过 Linux 命令删除或使用。对于 Windows，请将它们删除或替换为脱字号（^）。

  ```
  aws emr create-cluster --release-label {{emr-7.13.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 URL}}{{username}}、和{{password}}，替换为您的 RDS 实例的 JDBC 网址、用户名和密码。
**重要**  
JDBC URL 必须包含数据库名称作为后缀。**例如，jdbc: mysql: //.xxxxxxxxx.us-east-1.rds.amazonaws.com: 3306/ dbname。oozie-external-db**

  ```
  [{
    "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": []
  }]
  ```