View a markdown version of this page

外部の MySQL データベースまたは Amazon Aurora の使用 - Amazon EMR

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

外部の MySQL データベースまたは Amazon Aurora の使用

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 の概要」および「Amazon Aurora PostgreSQL の操作」を参照してください。Amazon RDS データベースの作成方法については、https://aws.amazon.com/rds/ を参照してください。

  2. データベースと ElasticMapReduce-Master セキュリティグループの間の JDBC 接続が許可されるようにセキュリティグループを変更します。アクセス用のセキュリティグループの変更方法については、「Amazon EMR マネージドセキュリティグループの使用」を参照してください。

  3. JDBC 設定値を、hive-site.xml に設定します:

    重要

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

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

      hostname を、データベースを実行する Amazon RDS インスタンスの DNS アドレスに置き換え、usernamepassword を、データベースの認証情報に置き換えます。MySQL データベースインスタンスおよび Aurora データベースインスタンスへの接続の詳細については、「Amazon RDS ユーザーガイド」の「Connecting to a DB instance running the MySQL database engine」および「Connecting to an Athena DB cluster」を参照してください。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" } } ]
    2. 次の AWS CLI コマンドに示すように、クラスターの作成時に hiveConfiguration.json ファイルを参照します。このコマンドでは、ファイルはローカルに保存されます。ファイルを Amazon S3 にアップロードし、そこで参照することもできます (例: s3://DOC-EXAMPLE-BUCKET/hiveConfiguration.json)。

      注記

      読みやすくするために、Linux 行連続文字 (\) が含まれています。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
  4. クラスターのプライマリノードに接続します。

    プライマリノードに接続する方法の詳細については、「Amazon EMR 管理ガイド」の「Connect to the primary node using SSH」を参照してください。

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

    CREATE EXTERNAL TABLE IF NOT EXISTS table_name ( key int, value int ) LOCATION s3://DOC-EXAMPLE-BUCKET/hdfs/
  6. 実行中のクラスターに Hive スクリプトを追加します。

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