使用外部 MySQL 資料庫或 Amazon Aurora - Amazon EMR

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

使用外部 MySQL 資料庫或 Amazon Aurora

若要使用外部 MySQL 資料庫或 Amazon Aurora 作為 Hive 中繼存放區,請於 Hive 為中繼存放區覆寫預設組態值,以在 Amazon RDS MySQL 執行個體或 Amazon Aurora PostgreSQL 執行個體上指定外部資料庫位置。

注意

Hive 不支援也無法避免對中繼存放區資料表的同時寫入存取權。如果您在兩個叢集間共用中繼存放區資訊,您必須確保不會同時寫入同一個表格中繼存放區,除非您寫入的是相同中繼存放區資料表中的不同分割區。

下列程序說明如何為 Hive 中繼存放區位置覆寫預設組態值,並使用重新設定的中繼存放區位置來啟動叢集。

若要建立位於 EMR 叢集之外的中繼存放區
  1. 建立 MySQL 或 Aurora PostgreSQL 資料庫。如果您使用 PostgreSQL,則必須在佈建叢集之後進行設定。建立叢集時僅支援 MySQL。如需有關 Aurora MySQL 和 Aurora PostgreSQL 之間差異的資訊,請參閱 Amazon Aurora MySQL 概觀使用 Amazon Aurora PostgreSQL。如需有關如何建立 Amazon RDS 資料庫的一般資訊,請參閱 https://aws.amazon.com/rds/

  2. 修改您的安全群組以允許資料庫與 ElasticMapReduce-Master (ElasticMapReduce-Master) 安全群組之間的 JDBC 連線。如需有關如何修改存取安全群組的資訊,請參閱使用 Amazon EMR 受管安全群組

  3. hive-site.xml 中設定 JDBC 設定值:

    重要

    如果您是將敏感資訊 (例如,密碼) 提供到 Amazon EMR 組態 API,將會對許可不足的那些帳戶顯示此資訊。如果您擔心這個資訊可能向其他使用者顯示,透過建立可明確拒絕對 elasticmapreduce:DescribeCluster API 金鑰之許可的使用者,使用管理帳戶建立叢集並限制其他使用者 (IAM 使用者或具有委派登入資料的使用者) 存取叢集上的服務。

    1. 建立名為 hiveConfiguration.json 的組態檔案,內含對 hive-site.xml 的編輯,如下所示。

      使用執行資料庫的 Amazon RDS 執行個體之 DNS 地址取代 hostname,並且使用資料庫的登入資料取代 usernamepassword。如需有關連線至 MySQL 和 Aurora 資料庫執行個體的詳細資訊,請參閱《Amazon RDS 使用者指南》中的連線至執行 MySQL 資料庫引擎的資料庫執行個體連線至 Athena 資料庫叢集javax.jdo.option.ConnectionURL 是用於 JDBC 中繼存放區的 JDBC 連線字串。javax.jdo.option.ConnectionDriverName 是 JDBC 中繼存放區的驅動程式類別名稱。

      MySQL JDBC 驅動器由 Amazon EMR 安裝。

      值屬性不能包含空格或歸位。它應該顯示在單一列。

      [ { "Classification": "hive-site", "Properties": { "javax.jdo.option.ConnectionURL": "jdbc:mysql://hostname:3306/hive?createDatabaseIfNotExist=true", "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver", "javax.jdo.option.ConnectionUserName": "username", "javax.jdo.option.ConnectionPassword": "password" } } ]
    2. 當您建立叢集時,請參考 hiveConfiguration.json 檔案,如下列 AWS CLI 命令所示。在這個命令中,檔案會存放在本機,您也可以將檔案上傳到 Amazon S3 並加以參考 (例如 s3://DOC-EXAMPLE-BUCKET/hiveConfiguration.json)。

      注意

      包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。

      aws emr create-cluster --release-label emr-7.7.0 --instance-type m5.xlarge --instance-count 2 \ --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
  4. 連接至您的叢集主節點。

    有關如何連接到主節點的資訊,請參閱《Amazon EMR 管理指南》中的使用 SSH 連接到主節點

  5. 透過輸入類似如下的命令來建立您的 Hive 資料表,以便在 Amazon S3 上指定位置:

    CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( key int, value int ) LOCATION s3://DOC-EXAMPLE-BUCKET/hdfs/
  6. 將您的 Hive 指令碼新增至執行中叢集。

Hive 叢集會使用位於 Amazon RDS 的中繼存放區來執行。透過指定中繼存放區位置來啟動所有額外的 Hive 叢集,其會共用此中繼存放區。