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

E-MapReduce:外部 Hive メタストアサービスへの接続

最終更新日:Jun 23, 2026

EMR Serverless Spark は外部の Hive メタストアサービスに接続し、そこに保存されているデータにアクセスできます。このトピックでは、ワークスペースでこの接続を設定し、データリソースを効率的に管理および使用する方法について説明します。

前提条件

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

制限事項

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

  • Hive メタストアサービスをデフォルトのデータカタログとして設定すると、ワークフロータスクがそれを使用するようになります。

操作手順

ステップ 1: Hive メタストアサービスの準備

説明

このドキュメントでは、EMR on ECS の Hive メタストアサービスを例として使用します。VPC 内にすでに Hive メタストアサービスがある場合は、このステップをスキップできます。

  1. EMR on ECS ページで、Hive サービスを含む DataLake クラスターを作成し、MetadataBuilt-in MySQL に設定します。詳細については、「クラスターの作成」をご参照ください。

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

  3. 次のコマンドを実行して Hive CLI に入ります:

    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 ページで、左側のナビゲーションウィンドウの Normal Network Connection をクリックします。

  2. Normal Network Connection ページで、Create Network Connection をクリックします。

  3. Create Network Connection ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。

    パラメーター

    説明

    Name

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

    VPC

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

    vSwitch

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

    StatusSucceeded の場合、ネットワーク接続が追加されたことを示します。

ステップ 3: Hive メタストアのサービスポートを開く

  1. ネットワーク接続用の vSwitch の CIDR ブロックを取得します。

    VPC コンソールにログインし、vSwitch ページに移動して vSwitch の CIDR ブロックを取得できます。

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

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

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

    3. 基本情報 ページで、Cluster Security Group の横にあるリンクをクリックします。

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

      パラメーター

      説明

      ポート

      9083 と入力します。

      ソース

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

      重要

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

ステップ 4: Hive メタストアへの接続

  1. EMR Serverless Spark ページで、左側のナビゲーションウィンドウの データディレクトリ をクリックします。

  2. データディレクトリ ページで、Add Catalog をクリックします。

  3. 表示されるダイアログボックスで、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 メタストアの使用

  1. データディレクトリ ページで、hive_metastore エントリを見つけ、[操作] 列の Set as default をクリックして、ワークスペースのデフォルトのデータカタログとして設定します。

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

    ワークスペースで SQL セッションが実行中の場合は、`hive_metastore` の設定を有効にするために再起動する必要があります。

  3. SparkSQL ジョブで `hive_metastore` テーブルからデータをクエリします。

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

    2. 次のコマンドを実行して、Hive メタストアサービスの `dw_users` テーブルをクエリします:

      SELECT * FROM dw_users;

      クエリは 1 つのレコードを返し、`name` 列の値は `Bob` です。

よくある質問

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

構成戦略は、HDFS クラスターが高可用性 (HA) モードであるかどうかによって異なります。

  • 非 HA の HDFS パスへのアクセス

    テーブルの location が指す HDFS パスに高可用性 (HA) が設定されていない場合、location 内のドメイン名がアクセス可能であることを確認するだけで済みます。デフォルトでは、master-1-1.<cluster-id>.<region>.emr.aliyuncs.com は直接アクセス可能です。その他のドメイン名については、ドメイン名の管理 を参照してマッピングを追加します。

  • HA が有効な HDFS パスへのアクセス

    テーブルの location が HA が有効な HDFS パスを指している場合は、ドメイン名のマッピングを設定し、次に「カスタム設定ファイルの管理」で `hdfs-site.xml` という名前の設定ファイルを作成する必要があります。ファイルを /etc/spark/conf パスに保存して、Java ランタイムまたは Fusion ランタイムがデータにアクセスできるようにします。次のコードは一例です。完全な内容は、ご利用の 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.kerberos.access.hadoopFileSystems Spark 構成を追加します。 この構成の値は、HDFS クラスターの fs.defaultFS パラメーターの値と同じである必要があります。 たとえば、高可用性 (HA) EMR on ECS クラスターのデフォルト値は hdfs://hdfs-cluster です。