

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 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.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 選擇 **Launch a DB Instance (啟動資料庫執行個體)**。

1. 選擇 MySQL，然後選擇 **Select (選取)**。

1. 保留預設選取的 **Multi-AZ Deployment and Provisioned IOPS Storage (異地同步備份部署和佈建 IOPS 儲存體)** 選項，然後按一下 **Next (下一步)**。

1. 保留 Instance Specifications (執行個體規格) 的預設值、指定設定，然後選擇 **Next (下一步)**。

1. 在 Configure Advanced Settings (配置進階設定) 頁面上，選擇適當的安全群組和資料庫名稱。您使用的安全群組至少須允許來自叢集主節點經由連接埠 3306 傳入的 TCP 存取。如果您此時尚未建立您的叢集，可以允許所有主機連線至連接埠 3306，並且在您啟動叢集後調整安全群組。選擇 **Launch DB Instance (啟動資料庫執行個體)**。

1. 從 RDS 儀表板選擇 **Instances (執行個體)**，然後選取您剛才建立的執行個體。當您的資料庫可使用時，請記下資料庫名稱、使用者名稱、密碼和 RDS 執行個體主機名稱。當您建立和設定叢集時，會使用這些資訊。

**使用 啟動叢集時，為 Oozie 指定外部 MySQL 資料庫 AWS CLI**

若要在使用 AWS CLI來啟動叢集時，指定 Oozie 的外部 MySQL 資料庫，請使用您在建立 RDS 執行個體時所記下的資訊 (用來設定包含組態物件的 `oozie-site`)。
**注意**  
您可以建立多個使用相同外部資料庫的叢集，但每個叢集將會共用查詢歷史記錄和使用者資訊。
+ 使用 AWS CLI建立已安裝 Oozie 的叢集、使用您建立的外部資料庫，以及參考具有指定資料庫屬性之 Oozie 組態分類的組態檔案。下列範例會建立已安裝 Oozie 的叢集，參考 Amazon S3 中的組態檔案 `myConfig.json`，此檔案會指定資料庫組態。
**注意**  
包含 Linux 行接續字元 (\$1) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows，請將其移除或取代為插入符號 (^)。

  ```
  aws emr create-cluster --release-label emr-7.12.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` 檔案的範例內容如下所示。以您的 RDS 執行個體的 JDBC URL、使用者名稱和密碼取代 *JDBC URL*、*username* 和 *password*。
**重要**  
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": []
  }]
  ```