EMR Serverless Spark は外部の Hive メタストアサービスに接続し、そこに保存されているデータにアクセスできます。このトピックでは、ワークスペースでこの接続を設定し、データリソースを効率的に管理および使用する方法について説明します。
前提条件
ワークスペースと SQL セッションが作成されていること。詳細については、「ワークスペースの作成」および「SQL セッションの管理」をご参照ください。
制限事項
-
Hive メタストアサービスを使用するには、ワークスペース内の既存のセッションを再起動する必要があります。
-
Hive メタストアサービスをデフォルトのデータカタログとして設定すると、ワークフロータスクがそれを使用するようになります。
操作手順
ステップ 1: Hive メタストアサービスの準備
このドキュメントでは、EMR on ECS の Hive メタストアサービスを例として使用します。VPC 内にすでに Hive メタストアサービスがある場合は、このステップをスキップできます。
-
EMR on ECS ページで、Hive サービスを含む DataLake クラスターを作成し、Metadata を Built-in MySQL に設定します。詳細については、「クラスターの作成」をご参照ください。
-
SSH を使用してクラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。
-
次のコマンドを実行して Hive CLI に入ります:
hive -
次のコマンドを実行して、Object Storage Service (OSS) に `dw_users` という名前のテーブルを作成し、データを挿入します:
CREATE TABLE `dw_users`( `name` string) LOCATION 'oss://<yourBucket>/path/to/file'; INSERT INTO dw_users select 'Bob';
ステップ 2: ネットワーク接続の追加
-
ネットワーク接続ページに移動します。
-
EMR コンソールにログインします。
-
左側のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。
-
[Spark] ページで、対象のワークスペースの名前をクリックします。
-
EMR Serverless Spark ページで、左側のナビゲーションウィンドウの Normal Network Connection をクリックします。
-
-
Normal Network Connection ページで、Create Network Connection をクリックします。
-
Create Network Connection ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。
パラメーター
説明
Name
新しい接続の名前を入力します。
VPC
EMR クラスターと同じ VPC を選択します。
vSwitch
EMR クラスターと同じ VPC にある vSwitch を選択します。
Status が Succeeded の場合、ネットワーク接続が追加されたことを示します。
ステップ 3: Hive メタストアのサービスポートを開く
-
ネットワーク接続用の vSwitch の CIDR ブロックを取得します。
VPC コンソールにログインし、vSwitch ページに移動して vSwitch の CIDR ブロックを取得できます。
-
セキュリティグループルールを追加します。
-
EMR on ECS コンソールにログインします。
-
[EMR on ECS] ページで、対象のクラスターの ID をクリックします。
-
基本情報 ページで、Cluster Security Group の横にあるリンクをクリックします。
-
セキュリティグループ ページで、[ルールを追加] をクリックします。[ソース] と [ポート] を指定し、OK をクリックします。
パラメーター
説明
ポート
9083と入力します。ソース
前のステップで取得した vSwitch の CIDR ブロックを入力します。
重要外部からの攻撃によるセキュリティリスクを防ぐため、[ソース] を 0.0.0.0/0 に設定しないでください。
-
ステップ 4: Hive メタストアへの接続
-
EMR Serverless Spark ページで、左側のナビゲーションウィンドウの データディレクトリ をクリックします。
-
データディレクトリ ページで、Add Catalog をクリックします。
-
表示されるダイアログボックスで、External Hive Metastore をクリックし、次の情報を設定してから、OK をクリックします。[外部 Hive メタストア] タブで、[データカタログ名] フィールドに
hive_metastoreを入力し、次のパラメーターを設定します。パラメーター
説明
Normal Network Connection
ステップ 2 で追加したネットワーク接続を選択します。
Metastore service address
Hive メタストアサービスの URI。フォーマットは
thrift://<Hive メタストアの IP アドレス>:9083です。<IP address of Hive metastore>は、EMR on ECS クラスターのマスターノードの内部 IP アドレスです。この IP アドレスは、クラスターの Nodes ページで確認できます。説明Hive メタストアサービスで高可用性 (HA) を使用している場合は、関連するすべてのノードの URI をカンマ (,) で区切って入力します。例: `thrift://<Hive メタストア 1 の IP アドレス>:9083,thrift://<Hive メタストア 2 の IP アドレス>:9083`。
Kerberos keytab file
Kerberos キータブファイルのパス。
Kerberos principal
キータブファイル内のプリンシパルの名前。Kerberos サービスでの認証に使用されます。
klist -kt <keytab_file>コマンドを使用して、対象のキータブファイル内のプリンシパルの名前を表示できます。
ステップ 5: Hive メタストアの使用
-
データディレクトリ ページで、
hive_metastoreエントリを見つけ、[操作] 列の Set as default をクリックして、ワークスペースのデフォルトのデータカタログとして設定します。 -
SQL セッションを再起動します。
ワークスペースで SQL セッションが実行中の場合は、`hive_metastore` の設定を有効にするために再起動する必要があります。
-
SparkSQL ジョブで `hive_metastore` テーブルからデータをクエリします。
-
SparkSQL 開発ジョブを作成します。詳細については、「SparkSQL 開発」をご参照ください。
-
次のコマンドを実行して、Hive メタストアサービスの `dw_users` テーブルをクエリします:
SELECT * FROM dw_users;クエリは 1 つのレコードを返し、`name` 列の値は `Bob` です。
-