

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 外部の MySQL データベースまたは Amazon Aurora の使用
<a name="emr-hive-metastore-external"></a>

Hive メタストアとして外部の MySQL データベースまたは Amazon Aurora を使用するには、Hive のメタストアのデフォルト設定値を上書きし、外部のデータベースの場所 (Amazon RDS MySQL インスタンスまたは Amazon Aurora PostgreSQL インスタンス) を指定します。

**注記**  
Hive では、メタストアテーブルに対する同時書き込みアクセスのサポートも防止も行いません。2 つのクラスター間でメタストア情報を共有する場合は、同じメタストアテーブルに同時に書き込まないようにします (同じメタストアテーブルの異なるパーティションに書き込む場合は除きます)。

次の手順では、Hive メタストアの場所として設定したデフォルト値を上書きし、新しく設定したメタストアの場所を使用してクラスターを起動する方法を示します。

**EMR クラスターの外にメタストアを作成するには**

1. MySQL または Aurora PostgreSQL データベースを作成します。PostgreSQL を使用する場合は、クラスターをプロビジョニングした後に設定する必要があります。クラスターの作成では MySQL のみがサポートされます。Aurora MySQL と Aurora PostgreSQL の違いについては、「[Amazon Aurora MySQL の概要](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Overview.html)」および「[Amazon Aurora PostgreSQL の操作](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraPostgreSQL.html)」を参照してください。Amazon RDS データベースの作成方法については、[https://aws.amazon.com/rds/](https://aws.amazon.com/rds/) を参照してください。

1. データベースと **ElasticMapReduce-Master** セキュリティグループの間の JDBC 接続が許可されるようにセキュリティグループを変更します。アクセス用のセキュリティグループの変更方法については、「[Amazon EMR マネージドセキュリティグループの使用](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-man-sec-groups.html)」を参照してください。

1. JDBC 設定値を、`hive-site.xml` に設定します:
**重要**  
パスワードなどの機密情報を Amazon EMR 設定 API に渡す場合、その情報は、十分なアクセス許可を持つアカウントに表示されます。その情報が他のユーザーに表示される可能性のあることを懸念する場合は、管理者アカウントでクラスターを作成し、`elasticmapreduce:DescribeCluster` API キーに対するアクセス権限を明示的に拒否するロールを作成することで、他のユーザー（IAM ユーザーまたは認証情報を委譲されたユーザー）に対してそのクラスター上のサービスへのアクセスを制限します。

   1. 次の例のように、`hiveConfiguration.json` の編集を含む `hive-site.xml` という設定ファイルを作成します。

       *hostname* を、データベースを実行する Amazon RDS インスタンスの DNS アドレスに置き換え、*username* と *password* を、データベースの認証情報に置き換えます。MySQL データベースインスタンスおよび Aurora データベースインスタンスへの接続の詳細については、「*Amazon RDS ユーザーガイド*」の「[Connecting to a DB instance running the MySQL database engine](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html)」および「[Connecting to an Athena DB cluster](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connect.html)」を参照してください。`javax.jdo.option.ConnectionURL` は、JDBC メタストアの JDBC 接続文字列です。`javax.jdo.option.ConnectionDriverName` は、JDBC メタストアのドライバークラス名です。

      MySQL JDBC ドライバーは Amazon EMR によってインストールされます。

      値のプロパティには、スペースや改行を含めることはできません。すべてを 1 行にする必要があります。

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

   1. 次の AWS CLI コマンドに示すように、クラスターの作成時に `hiveConfiguration.json` ファイルを参照します。このコマンドでは、ファイルはローカルに保存されます。ファイルを Amazon S3 にアップロードし、そこで参照することもできます (例: `s3://DOC-EXAMPLE-BUCKET/hiveConfiguration.json`)。
**注記**  
読みやすくするために、Linux 行連続文字 (\$1) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

      ```
      aws emr create-cluster --release-label emr-7.12.0 --instance-type m5.xlarge --instance-count 2 \
      --applications Name=Hive --configurations file://hiveConfiguration.json --use-default-roles
      ```

1. クラスターのプライマリノードに接続します。

   プライマリノードに接続する方法の詳細については、「*Amazon EMR 管理ガイド*」の「[Connect to the primary node using SSH](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-connect-master-node-ssh.html)」を参照してください。

1. 次のようなコマンドを入力することにより、Amazon S3 上の場所を指定して Hive テーブルを作成します。

   ```
   CREATE EXTERNAL TABLE IF NOT EXISTS table_name
   (
   key int,
   value int
   )
   LOCATION s3://DOC-EXAMPLE-BUCKET/hdfs/
   ```

1. 実行中のクラスターに Hive スクリプトを追加します。

Hive クラスターは、Amazon RDS に配置されたメタストアを使って実行されます。このメタストアを共有する他の Hive クラスターはすべて、メタストアの場所を指定して起動します。