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

E-MapReduce:EMR Serverless Spark と他の VPC 間のネットワーク接続の確立

最終更新日:Mar 27, 2026

ネットワーク接続により、EMR Serverless Spark ワークスペースを Virtual Private Cloud (VPC) に接続でき、Spark ジョブがその VPC 内のデータソースやサービスにアクセスできるようになります。このガイドでは、ネットワーク接続を設定して、Spark SQL および JAR ジョブを Hive Metastore (HMS) に接続する手順を説明します。

ワークスペースを VPC に接続すると、Spark タスクはその VPC を通じてトラフィックをルーティングします。タスクがパブリックエンドポイント(たとえば、パブリックネットワーク経由の OSS など)にも到達する必要がある場合は、VPC にインターネット NAT ゲートウェイをデプロイし、SNAT を設定してください。これを行わないと、パブリックエンドポイントは到達不能になります。詳細については、「インターネット NAT ゲートウェイの SNAT 機能を使用してインターネットにアクセスする」をご参照ください。

前提条件

開始する前に、以下が準備できていることを確認してください。

  • [EMR on ECS] ページに、Hive サービスを含み、[メタデータ][内蔵 MySQL] を使用する DataLake クラスターがあること。詳細については、「クラスターの作成」をご参照ください。

サポートされるゾーン

vSwitch は特定のゾーンでのみ利用可能です。

  • 中国リージョン

    リージョン名 リージョン ID サポートされるゾーン
    中国 (杭州) cn-hangzhou ゾーン H、ゾーン I、ゾーン J
    中国 (上海) cn-shanghai ゾーン B、ゾーン L、ゾーン F、ゾーン G
    中国 (北京) cn-beijing ゾーン F、ゾーン G、ゾーン H、ゾーン K
    中国 (深セン) cn-shenzhen ゾーン E、ゾーン F
    中国 (香港) cn-hongkong ゾーン B、ゾーン C
  • その他の国と地域

    リージョン名 リージョン ID サポートされるゾーン
    ドイツ (フランクフルト) eu-central-1 ゾーン A、ゾーン B
    インドネシア (ジャカルタ) ap-southeast-5 ゾーン A、ゾーン B
    シンガポール ap-southeast-1 ゾーン B、ゾーン C
    米国 (バージニア) us-east-1 ゾーン A、ゾーン B
    米国 (シリコンバレー) us-west-1 ゾーン A、ゾーン B
    日本 (東京) ap-northeast-1 ゾーン B、ゾーン C

ステップ 1:ネットワーク接続の追加

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

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

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

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

  5. [ネットワーク接続] ページで、[ネットワーク接続の作成] をクリックします。

  6. [ネットワーク接続の作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。接続の [ステータス][成功] に変わると、接続は準備完了です。

    パラメーター 説明
    [名前] 接続の名前を入力します。
    VPC ご利用の EMR クラスターと同じ VPC を選択します。利用可能な VPC がない場合は、[VPC の作成] をクリックして VPC コンソールで作成します。詳細については、「VPC と vSwitch」をご参照ください。
    vSwitch ご利用の EMR クラスターと同じ VPC 内の vSwitch を選択します。vSwitch はサポートされているゾーン (サポートされるゾーン をご参照ください) にある必要があります。必要なゾーンに利用可能な vSwitch がない場合は、VPC コンソールで作成します。詳細については、「vSwitch の作成と管理」をご参照ください。

    image

ステップ 2:EMR クラスターへのセキュリティグループルールの追加

Spark ジョブが実行されると、トラフィックは vSwitch の CIDR ブロックからご利用の VPC に流れ込みます。そのトラフィックが HMS サービスに到達できるようにするには、EMR クラスターのセキュリティグループにインバウンドルールを追加します。

  1. ステップ 1 で選択した vSwitch の CIDR ブロックを取得します。VPC コンソールにログインし、[vSwitch] ページに移動して CIDR ブロックを見つけます。

    image

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

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

  4. [基本情報] タブの [セキュリティ] セクションで、[クラスターセキュリティグループ] の横にあるリンクをクリックします。

  5. [セキュリティグループの詳細] ページの [ルール] セクションに移動し、[ルールの追加] をクリックします。次のパラメーターを設定し、[OK] をクリックします。

    重要

    [承認オブジェクト]」を 0.0.0.0/0 に設定しないでください。過剰に許可されたルールは、クラスターをパブリックインターネットからの攻撃にさらします。

    パラメーター
    [プロトコル] TCP (デフォルト)。Kerberos 認証の場合は、UDP を選択し、代わりにポート 88 をオープンします。詳細については、「Kerberos 認証の有効化」をご参照ください。
    ソース ステップ 1 の vSwitch の CIDR ブロック。
    [宛先 (現在のインスタンス)] アクセスを許可する宛先ポートを指定します。例:9083

(任意) ステップ 3:Hive テーブルのセットアップ

クエリ対象の Hive テーブルが既にある場合は、このステップをスキップしてください。

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

  2. Hive コマンドラインに入ります。

    hive
  3. テーブルを作成します。

    CREATE TABLE my_table (id INT, name STRING);
  4. サンプルデータを挿入します。

    INSERT INTO my_table VALUES (1, 'John');
    INSERT INTO my_table VALUES (2, 'Jane');
  5. データを確認します。

    SELECT * FROM my_table;

(任意) ステップ 4:JAR アーティファクトのビルドとアップロード

Spark SQL ジョブを使用する場合は、このステップをスキップしてください。

  1. ローカルマシンに次のクラスを持つ Maven プロジェクトを作成します。

    プロジェクトには次の内容が含まれています。

    package com.example;
    
    import org.apache.spark.sql.Dataset;
    import org.apache.spark.sql.Row;
    import org.apache.spark.sql.SparkSession;
    
    public class DataFrameExample {
        public static void main(String[] args) {
            // Hive サポートを有効にして SparkSession を作成します。
            SparkSession spark = SparkSession.builder()
                    .appName("HMSQueryExample")
                    .enableHiveSupport()
                    .getOrCreate();
    
            // HMS テーブルをクエリします。
            Dataset<Row> result = spark.sql("SELECT * FROM default.my_table");
    
            // 結果を出力します。
            result.show();
    
            spark.stop();
        }
    }

    pom.xml ファイルには次の内容が含まれています。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>sparkDataFrame</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <spark.version>3.3.1</spark.version>
            <scala.binary.version>2.12</scala.binary.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-core_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-sql_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-hive_${scala.binary.version}</artifactId>
                <version>${spark.version}</version>
            </dependency>
        </dependencies>
    </project>
  2. JAR をビルドします。

    mvn package

    これにより、sparkDataFrame-1.0-SNAPSHOT.jartarget/ ディレクトリに生成されます。

  3. JAR をワークスペースにアップロードします。

    1. ご利用のワークスペースの EMR Serverless Spark ページで、左側のナビゲーションウィンドウの [アーティファクト] をクリックします。

    2. [アーティファクト] ページで、[ファイルをアップロード] をクリックし、sparkDataFrame-1.0-SNAPSHOT.jar をアップロードします。

ステップ 5:ジョブの作成と実行

JAR ジョブ

  1. EMR Serverless Spark ページで、左側のナビゲーションウィンドウの [開発] をクリックします。

  2. [新規] をクリックし、名前を入力し、[アプリケーション (バッチ)] > [JAR] を選択して、[OK] をクリックします。

  3. ジョブエディターで、次のパラメーターを設定します。他のすべてのパラメーターはデフォルト値のままにします。[Spark 設定] には、<hms-private-ip> を HMS マスターノードのプライベート IP アドレスに置き換えて、次のように入力します。

    パラメーター
    メイン JAR リソース sparkDataFrame-1.0-SNAPSHOT.jar を選択します。
    [メインクラス] com.example.DataFrameExample
    [ネットワーク接続] ステップ 1 で作成したネットワーク接続を選択します。
    Spark 設定 下記をご参照ください。
    spark.hadoop.hive.metastore.uris thrift://<hms-private-ip>:9083
    spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory

    プライベート IP アドレスを見つけるには、EMR クラスターの [ノード] ページに移動し、[emr-master] ノードグループを展開します。

  4. [実行] をクリックします。

  5. ジョブが完了したら、ページ下部の [実行記録] に移動し、[ログ] をクリックして [ログ探索] タブで出力を表示します。

Spark SQL ジョブ

  1. Spark SQL セッションを作成して開始します。詳細については、「SQL セッションの管理」をご参照ください。セッションを設定する際に、以下を設定します。

    • [ネットワーク接続]:ステップ 1 で作成したネットワーク接続を選択します。

    • [Spark 設定]<hms-private-ip> を HMS マスターノードのプライベート IP アドレスに置き換えて、次のように入力します。

      spark.hadoop.hive.metastore.uris thrift://<hms-private-ip>:9083
      spark.hadoop.hive.imetastoreclient.factory.class org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory

      プライベート IP アドレスを確認するには、EMR クラスターの [ノード] ページに移動し、emr-master ノードグループの横にある image アイコンをクリックします。

  2. EMR Serverless Spark ページで、左側のナビゲーションウィンドウの [開発] をクリックします。

  3. image アイコンをクリックして新しいファイルを作成します。

  4. [新規] ダイアログボックスで、名前 (例:users_task) を入力し、タイプを [SparkSQL] のままにして、[OK] をクリックします。

  5. カタログ、データベース、および SQL セッションインスタンスを選択します。次のクエリを入力し、[実行] をクリックします。

    外部メタストアを使用する SQL コードをワークフローにデプロイする場合は、テーブルを db.table_name 形式で指定し、[カタログ] オプションから catalog_id.default 形式でデフォルトのデータベースを選択します。
    SELECT * FROM default.my_table;

    結果は、ページ下部の [実行結果] セクションに表示されます。

    image