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

Elastic Compute Service:eRDMA で強化された ECS インスタンスへの Spark クラスターのデプロイ

最終更新日:May 16, 2026

eRDMA で強化された Elastic Compute Service (ECS) インスタンスで Spark クラスターを構築し、ベンチマークを実行して超低レイテンシーでの負荷処理性能を測定します。

背景

ベンチマークは、負荷実行時間、スループット、リソース使用率を測定するパフォーマンスベンチマークツールです。

手順 1: 環境の準備

ベンチマークテストを実行する前に、Hadoop クラスターをセットアップし、必要なドライバーをインストールし、eRDMA を設定します。

  1. Hadoop 環境を準備します。Hadoop クラスターが既に存在する場合は、この手順をスキップしてください。

    • ハードウェアとソフトウェアの要件

      次の Hadoop バージョン、Spark バージョン、および ECS インスタンスを準備します:

      • Hadoop バージョン:Hadoop 3.2.1。

      • Spark バージョン:Spark 3.2.1。

      • ECS インスタンス

        • インスタンスタイプ:「概要」をご参照ください。

        • インスタンスあたりの vCPU:16。

        • インスタンス数:4 台。1 台のマスターノードと 3 台のワーカーノード。

    • インストール

  2. マスターノードにログインします。「Workbench を使用した Linux インスタンスへのログイン」をご参照ください。

  3. eRDMA を設定します。

    • 必要なドライバーをインストールします。「エンタープライズレベルのインスタンスで eRDMA を有効にする」をご参照ください。

    • ネットワーク設定を構成します。

      1. hosts ファイルを開きます:

        vim /etc/hosts
      2. I キーを押して挿入モードに入り、ファイルの内容を次のように変更します:

        192.168.201.83 poc-t5m0        master1
        192.168.201.84 poc-t5w0
        192.168.201.86 poc-t5w1
        192.168.201.85 poc-t5w2
        説明

        IP アドレスを実際の eRDMA インターフェース (ERI) の IP アドレスに置き換えてください。

      3. Esc キーを押し、:wq と入力して Enter キーを押し、保存して終了します。

    • YARN の設定を構成します。

      説明

      ECS インスタンスのデフォルト NIC が eRDMA をサポートしている場合は、この手順をスキップしてください。

      1. yarn-env.sh ファイルを開きます:

        cd /opt/hadoop-3.2.1/etc/hadoop
        vim yarn-env.sh
      2. I キーを押して挿入モードに入り、次の内容を追加します:

        RDMA_IP=`ip addr show eth1 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1`
        export YARN_NODEMANAGER_OPTS="-Dyarn.nodemanager.hostname=$RDMA_IP"
        説明

        eth1 を実際の ERI 名に置き換えてください。

      3. Esc キーを押し、:wq と入力して Enter キーを押し、保存して終了します。

    • Spark を設定します。

      説明

      ECS インスタンスのデフォルト NIC が eRDMA をサポートしている場合は、この手順をスキップしてください。

      1. spark-env.sh ファイルを開きます:

        cd /opt/spark-3.2.1-bin-hadoop3.2/conf
        vim spark-env.sh
      2. I キーを押して挿入モードに入り、次の内容を追加します:

        export SPARK_LOCAL_IP=`/sbin/ip addr show eth1 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1`
        説明

        eth1 を実際の ERI 名に置き換えてください。

      3. Esc キーを押し、:wq と入力して Enter キーを押し、保存して終了します。

  4. HDFS と YARN を起動します:

    $HADOOP_HOME/sbin/start-all.sh

手順 2: ベンチマークインストールパッケージのダウンロード

ベンチマークインストールパッケージをダウンロードして解凍し、Spark eRDMA プラグインと依存関係ライブラリを取得します。

  1. ベンチマークインストールパッケージをダウンロードします:

    wget https://mracc-release.oss-cn-beijing.aliyuncs.com/erdma-spark/spark-erdma-jverbs.tar.gz
  2. spark-erdma-jverbs.tar.gz パッケージを解凍します:

    tar -zxvf spark-erdma-jverbs.tar.gz

    パッケージには次のコンポーネントが含まれています:

    • erdmalib: libdisni.so に対応する、spark-erdma プラグインに必要なネイティブライブラリです。

    • plugin-sparkrdma: Spark RDMA プラグインと依存ライブラリであり、spark-eRDMA-1.0-for-spark-3.2.1.jardisni-2.1-jar-with-dependencies.jar に対応します。

手順 3: ベンチマークテストの実行

IP ルートと Spark の設定を行い、テストデータを生成し、ベンチマークテストを実行します。

  1. IP ルートを変更します。

    説明

    お使いの ECS インスタンスのデフォルト NIC が eRDMA をサポートしている場合は、この手順をスキップしてください。

    route del -net 192.168.201.0 netmask 255.255.255.0 metric 0 dev eth0 && \
    route add -net 192.168.201.0 netmask 255.255.255.0 metric 1000 dev eth0
    説明

    IP アドレスを実際の ERI のネットワークアドレスに置き換えてください。

  2. Spark を設定します。

    1. spark-jverbs-erdma.conf ファイルを開きます:

      vim /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-jverbs-erdma.conf
    2. I キーを押して挿入モードに入り、ファイルの内容を次のように変更します:

      spark.master yarn
      spark.deploy-mode client
      # ドライバー
      spark.driver.cores 4
      spark.driver.memory 19g
      # エグゼキューター
      spark.executor.instances 12
      spark.executor.memory 10g
      spark.executor.cores 4
      spark.executor.heartbeatInterval   60s
      # シャッフル
      spark.task.maxFailures 4
      spark.default.parallelism 36
      spark.sql.shuffle.partitions 192
      spark.shuffle.compress            true
      spark.shuffle.spill.compress      true
      
      # その他
      spark.network.timeout 3600
      spark.sql.broadcastTimeout 3600
      spark.eventLog.enabled             false
      spark.eventLog.dir                 hdfs://master1:9000/sparklogs
      spark.eventLog.compress            true
      spark.yarn.historyServer.address   master1:18080
      spark.serializer                  org.apache.spark.serializer.KryoSerializer
      
      # eRDMA
      spark.driver.extraLibraryPath   /path/erdmalib
      spark.executor.extraLibraryPath   /path/erdmalib
      spark.driver.extraClassPath       /path/spark-eRDMA-1.0-for-spark-3.2.1.jar:/path/disni-2.1-jar-with-dependencies.jar
      spark.executor.extraClassPath     /path/spark-eRDMA-1.0-for-spark-3.2.1.jar:/path/disni-2.1-jar-with-dependencies.jar
      spark.shuffle.manager org.apache.spark.shuffle.sort.RdmaShuffleManager
      spark.shuffle.sort.io.plugin.class org.apache.spark.shuffle.rdma.RdmaLocalDiskShuffleDataIO
      spark.shuffle.rdma.recvQueueDepth  128
      説明
      • 高速化率を向上させるには、spark.shuffle.compressfalse に設定します。

      • サンプルコードでは、16 vCPU と 128 GB のメモリを搭載した ECS インスタンス用の Spark リソース設定を使用しています。クラスターの規模やインスタンスの仕様に応じて、spark.executor.instancesspark.executor.memoryspark.executor.cores、および spark.sql.shuffle.partitions を調整してください。

    3. Esc キーを押し、:wq と入力して Enter キーを押し、保存して終了します。

  3. データを生成します:

    cd /opt/spark-3.2.1-bin-hadoop3.2/conf
    spark-submit --properties-file /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-normal.conf --class com.databricks.spark.sql.perf.tpcds.TPCDS_Bench_DataGen spark-sql-perf_2.12-0.5.1-SNAPSHOT.jar hdfs://master1:9000/tmp/tpcds_400 tpcds_400 400 parquet
    説明

    400 はデータ量を GB 単位で指定します。クラスターの規模に応じて調整してください。

  4. ベンチマークテストを実行します:

    spark-submit --properties-file /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-jverbs-erdma.conf --class com.databricks.spark.sql.perf.tpcds.TPCDS_Bench_RunAllQuery spark-sql-perf_2.12-0.5.1-SNAPSHOT.jar all hdfs://master1:9000/tmp/tpcds_400 tpcds_400 /tmp/tpcds_400_result

    以下の出力は、テストが完了したことを示します。テスト結果には、Spark クラスターの負荷実行時間が表示されます。Test result

    説明

    eRDMA のパフォーマンスを比較するには、Spark の conf ディレクトリから spark-erdma プラグインの設定を削除するか、eRDMA を使用しない Spark クラスターで同じベンチマークテストを実行し、結果を比較してください。