すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:外部 Hive Metastore サービスへの接続

最終更新日:Nov 09, 2025

E-MapReduce (EMR) Serverless Spark は、外部 Hive Metastore サービスに接続して Hive Metastore に保存されているデータにアクセスすることをサポートしています。このトピックでは、EMR Serverless Spark でこの接続を構成して、動作環境のデータリソースを効率的に管理および使用する方法について説明します。

前提条件

ワークスペースと SQL セッションが作成されていること。 詳細については、「ワークスペースの作成」および「SQL セッションの管理」をご参照ください。

制限事項

  • Hive Metastore を使用するには、ワークスペース内の既存のセッションを再起動する必要があります。

  • Hive Metastore をデフォルトのデータカタログとして設定すると、フロータスクはデフォルトでそれを使用します。

手順

ステップ 1: Hive Metastore サービスの準備

説明

このトピックでは、外部サービスの例として EMR on ECS の Hive Metastore を使用します。仮想プライベートクラウド (VPC) に Hive Metastore サービスがすでに存在する場合は、このステップをスキップできます。

  1. EMR on ECS ページで、Hive サービスを含み、[メタデータ][内蔵 MySQL] に設定されている DataLake クラスターを作成できます。 詳細については、「クラスターの作成」をご参照ください。

  2. Secure Shell (SSH) を使用してクラスターのマスターノードにログインします。 詳細については、「クラスターへのログイン」をご参照ください。

  3. 次のコマンドを実行して、Hive コマンドラインに入ります。

    hive
  4. 次のコマンドを実行して、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: ネットワーク接続の追加

  1. ネットワーク接続ページに移動します。

    1. EMR コンソールにログインします。

    2. 左側のナビゲーションウィンドウで、EMR Serverless > Spark を選択します。

    3. [Spark] ページで、対象のワークスペースをクリックします。

    4. [EMR Serverless Spark] ページで、左側のナビゲーションウィンドウにある [ネットワーク接続] をクリックします。

  2. [ネットワーク接続] ページで、[ネットワーク接続の追加] をクリックします。

  3. [ネットワーク接続の追加] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。

    パラメーター

    説明

    接続名

    新しい接続の名前を入力します。

    VPC

    EMR クラスターと同じ VPC を選択します。

    VSwitch

    EMR クラスターと同じ VPC にある vSwitch を選択します。

    ネットワーク接続は、[ステータス][成功] になると確立されます。

    image

ステップ 3: Hive Metastore サービスポートを開く

  1. ネットワーク接続で指定された vSwitch の CIDR ブロックを取得します。

    VPC コンソールまたは にログインし、[VSwitches] ページに移動して vSwitch の CIDR ブロックを見つけます。

    image

  2. セキュリティグループルールを追加します。

    1. EMR on ECS コンソールにログインします。

    2. [EMR On ECS] ページで、対象のクラスター ID をクリックします。

    3. [基本情報] ページで、[クラスターセキュリティグループ] のリンクをクリックします。

    4. [セキュリティグループ] ページで、[ルールの追加] をクリックします。[ソース][ポート] を設定し、[OK] をクリックします。

      パラメーター

      説明

      ポート

      ポート 9083 を入力します。

      ソース

      前のステップで取得した vSwitch の CIDR ブロックを入力します。

      重要

      外部からの攻撃によるセキュリティリスクを防止するため、[送信元]0.0.0.0/0 を設定しないでください。

ステップ 4: Hive Metastore への接続

  1. [EMR Serverless Spark] ページで、左側のナビゲーションウィンドウにある [データカタログ] をクリックします。

  2. [データカタログ] ページで、[データカタログの追加] をクリックします。

  3. ダイアログボックスで、[外部 Hive Metastore] をクリックします。 次のパラメーターを設定し、[OK] をクリックします。image

    パラメーター

    説明

    ネットワーク接続

    ステップ 2 で追加したネットワーク接続を選択します。

    Metastore エンドポイント

    Hive Metastore の URI。フォーマットは thrift://<Hive metastore の IP アドレス>:9083 です。

    <Hive metastore の IP アドレス> は HMS サービスの内部 IP アドレスです。この例では、EMR クラスターのマスターノードの内部 IP アドレスです。EMR クラスターの [ノード管理] ページで確認できます。

    説明

    HMS で高可用性 (HA) が有効になっている場合は、複数のノードのエンドポイントを入力できます。URI をカンマ (,) で区切ります。例: thrift://<Hive metastore 1 の IP アドレス>:9083,thrift://<Hive metastore 2 の IP アドレス>:9083。

    Kerberos Keytab ファイルパス

    Kerberos keytab ファイルへのパス。

    Kerberos プリンシパル

    keytab ファイルに含まれるプリンシパルの名前。Kerberos サービスでの ID 検証に使用されます。klist -kt <keytab file> コマンドを実行して、対象の keytab ファイル内のプリンシpal名を表示できます。

ステップ 5: Hive Metastore の使用

  1. [データカタログ] ページで、hive_metastore を見つけ、[アクション] 列の [デフォルトとして設定] をクリックして、ワークスペースのデフォルトのデータカタログにします。

    image

  2. SQL セッションを再起動します。

    ワークスペースに SQL セッションがすでに存在する場合、hive_metastore の設定を有効にするには、セッションを停止してから再起動する必要があります。

  3. SQL Developer を使用して Hive Metastore のテーブルからデータをクエリします。

    1. 新しい SQL ジョブを作成します。 詳細については、「SparkSQL ジョブの開発」をご参照ください。

    2. 次のコマンドを実行して `dw_users` テーブルをクエリします。

      SELECT * FROM dw_users;

      image

よくある質問

HDFS データにアクセスするにはどうすればよいですか?

構成方法は、Hadoop 分散ファイルシステム (HDFS) クラスターが高可用性 (HA) モードであるかどうかによって異なります。

  • HA なしで HDFS パスにアクセスする

    テーブルの location が HA が有効になっていないクラスターの HDFS パスを指している場合、location 内のドメイン名にアクセスできることを確認する必要があります。デフォルトでは、master-1-1.<cluster-id>.<region>.emr.aliyuncs.com に直接アクセスできます。他のドメイン名の場合は、マッピングを追加する必要があります。 詳細については、「ドメイン名の管理」をご参照ください。

  • HA を使用して HDFS パスにアクセスする

    テーブルの `location` が HA が有効になっているクラスターの HDFS パスを指している場合は、まずドメイン名のマッピングを構成する必要があります。次に、カスタム構成ファイルの管理 で hdfs-site.xml という名前の構成ファイルを作成し、`/etc/spark/conf` パスに保存します。このステップにより、Java Runtime または Fusion Runtime がデータにアクセスできるようになります。次のコードはサンプルファイルを提供します。完全な内容は、EMR on ECS クラスターの hdfs-site.xml ファイルに基づいている必要があります。

    <?xml version="1.0"?>
    <configuration>
      <property>
        <name>dfs.nameservices</name>
        <value>hdfs-cluster</value>
      </property>
      <property>
        <name>dfs.ha.namenodes.hdfs-cluster</name>
        <value>nn1,nn2,nn3</value>
      </property>
      <property>
        <name>dfs.namenode.rpc-address.hdfs-cluster.nn1</name>
        <value>master-1-1.<cluster-id>.<region-id>.emr.aliyuncs.com:<port></value>
      </property>
      <property>
        <name>dfs.namenode.rpc-address.hdfs-cluster.nn2</name>
        <value>master-1-2.<cluster-id>.<region-id>.emr.aliyuncs.com:<port></value>
      </property>
      <property>
        <name>dfs.namenode.rpc-address.hdfs-cluster.nn3</name>
        <value>master-1-3.<cluster-id>.<region-id>.emr.aliyuncs.com:<port></value>
      </property>
      <property>
        <name>dfs.client.failover.proxy.provider.hdfs-cluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
      </property>
    </configuration>
  • (オプション) Kerberos が有効な HDFS パスへのアクセスの構成

    ジョブが Kerberos が有効な HDFS パスにアクセスする必要がある場合は、Spark 構成に spark.kerberos.access.hadoopFileSystems パラメーターを追加する必要があります。このパラメーターの値は、HDFS クラスターの `fs.defaultFS` 構成に基づいている必要があります。たとえば、HA EMR on ECS クラスターのデフォルト値は hdfs://hdfs-cluster です。