All Products
Search
Document Center

Elastic Compute Service:Menerapkan Cluster Spark pada Instance yang Ditingkatkan dengan eRDMA

Last Updated:Jul 06, 2025

Elastic Remote Direct Memory Access (eRDMA) memungkinkan pemrosesan permintaan dengan latensi ultra-rendah. Topik ini menjelaskan cara membuat cluster Spark menggunakan instance Elastic Compute Service (ECS) yang ditingkatkan dengan eRDMA sebagai node dan menguji kinerja pemrosesan beban menggunakan Benchmark.

Informasi latar belakang

Benchmark adalah alat pengujian kinerja yang digunakan untuk mengevaluasi waktu eksekusi beban, laju transmisi, throughput, dan pemanfaatan sumber daya.

Langkah 1: Persiapan awal

Sebelum menguji kinerja pemrosesan beban cluster Spark, siapkan lingkungan yang diperlukan, termasuk mesin Hadoop dan Spark, instalasi Hadoop, serta konfigurasi eRDMA.

  1. Siapkan lingkungan Hadoop. Jika cluster Hadoop sudah tersedia, lewati langkah ini.

    • Persyaratan Perangkat Keras dan Perangkat Lunak:

      Gunakan versi Hadoop, Spark, dan instance ECS berikut:

      • Versi Hadoop: Hadoop 3.2.1.

      • Versi Spark: Spark 3.2.1.

      • Instance ECS:

        • Tipe Instance ECS: Lihat Ikhtisar.

        • Jumlah vCPU per Instance ECS: 16.

        • Jumlah Instance ECS: Empat. Satu instance ECS berfungsi sebagai node master, dan tiga instance lainnya sebagai node pekerja dalam cluster Hadoop.

    • Prosedur Instalasi:

  2. Masuk ke instance ECS yang bertindak sebagai node master.

    Untuk informasi lebih lanjut, lihat Gunakan Workbench untuk terhubung ke instance Linux melalui SSH.

  3. Konfigurasikan eRDMA.

    • Instal driver yang diperlukan.

      Untuk detail lebih lanjut, lihat Aktifkan eRDMA pada instance tingkat perusahaan.

    • Konfigurasikan pengaturan jaringan.

      1. Jalankan perintah berikut untuk membuka file hosts:

        vim /etc/hosts
      2. Tekan tombol I untuk masuk ke mode Sisipkan dan modifikasi konten berikut dalam file:

        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
        Catatan

        Ganti alamat IP dengan alamat IP antarmuka eRDMA (ERI) aktual.

      3. Tekan tombol Esc untuk keluar dari mode Sisipkan. Masukkan :wq dan tekan tombol Enter untuk menyimpan dan keluar dari file.

    • Konfigurasikan Yet Another Resource Negotiator (YARN).

      Catatan

      Jika Network Interface Controller (NIC) default instance ECS mendukung eRDMA, Anda tidak perlu mengonfigurasi YARN.

      1. Jalankan perintah berikut untuk membuka file yarn-env.sh:

        cd /opt/hadoop-3.2.1/etc/hadoop
        vim yarn-env.sh
      2. Tekan tombol I untuk masuk ke mode Sisipkan dan tambahkan konten berikut ke dalam file:

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

        Ganti eth1 dengan nama ERI aktual.

      3. Tekan tombol Esc untuk keluar dari mode Sisipkan. Masukkan :wq dan tekan tombol Enter untuk menyimpan dan keluar dari file.

    • Konfigurasikan Spark.

      Catatan

      Jika NIC default instance ECS mendukung eRDMA, Anda tidak perlu mengonfigurasi Spark.

      1. Jalankan perintah berikut untuk membuka file spark-env.sh:

        cd /opt/spark-3.2.1-bin-hadoop3.2/conf
        vim spark-env.sh
      2. Tekan tombol I untuk masuk ke mode Sisipkan dan tambahkan konten berikut ke dalam file:

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

        Ganti eth1 dengan nama ERI aktual.

      3. Tekan tombol Esc untuk keluar dari mode Sisipkan. Masukkan :wq dan tekan tombol Enter untuk menyimpan dan keluar dari file.

  4. Jalankan perintah berikut untuk memulai Hadoop Distributed File System (HDFS) dan YARN:

    $HADOOP_HOME/sbin/start-all.sh

Langkah 2: Unduh paket instalasi Benchmark

Bagian ini menjelaskan cara mengunduh paket instalasi Benchmark.

  1. Jalankan perintah berikut untuk mengunduh paket instalasi Benchmark:

    wget https://mracc-release.oss-cn-beijing.aliyuncs.com/erdma-spark/spark-erdma-jverbs.tar.gz
  2. Jalankan perintah berikut untuk mengekstrak paket instalasi spark-erdma-jverbs.tar.gz:

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

    Komponen berikut termasuk dalam paket instalasi:

    • erdmalib: library native yang diperlukan untuk menjalankan plugin spark-erdma. Library ini sesuai dengan file libdisni.so.

    • plugin-sparkrdma: plugin dan library dependensi yang mendukung Spark RDMA, yang sesuai dengan file spark-eRDMA-1.0-for-spark-3.2.1.jar dan disni-2.1-jar-with-dependencies.jar.

Langkah 3: Jalankan uji coba Benchmark

Bagian ini menjelaskan cara menggunakan Benchmark untuk menguji kinerja pemrosesan beban cluster Spark.

  1. Jalankan perintah berikut untuk memodifikasi rute IP.

    Catatan

    Jika NIC default instance ECS Anda mendukung eRDMA, lewati langkah ini.

    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
    Catatan

    Ganti alamat IP dengan alamat gateway IP dari ERI aktual.

  2. Konfigurasikan Spark.

    1. Jalankan perintah berikut untuk membuka file konfigurasi spark-jverbs-erdma.conf:

      vim /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-jverbs-erdma.conf
    2. Tekan tombol I untuk masuk ke mode Sisipkan dan modifikasi konten berikut dalam file:

      spark.master yarn
      spark.deploy-mode client
      #driver
      spark.driver.cores 4
      spark.driver.memory 19g
      #executor
      spark.executor.instances 12
      spark.executor.memory 10g
      spark.executor.cores 4
      spark.executor.heartbeatInterval   60s
      #shuffle
      spark.task.maxFailures 4
      spark.default.parallelism 36
      spark.sql.shuffle.partitions 192
      spark.shuffle.compress            true
      spark.shuffle.spill.compress      true
      
      #other
      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
      Catatan
      • Atur parameter spark.shuffle.compress menjadi false untuk mencapai rasio akselerasi yang lebih baik.

      • Dalam contoh kode sebelumnya, pengaturan sumber daya Spark seperti parameter spark.executor.instances, spark.executor.memory, spark.executor.cores, dan spark.sql.shuffle.partitions dari instance ECS yang memiliki 32 vCPU dan 128 GB memori digunakan. Modifikasi pengaturan sumber daya Spark berdasarkan skala cluster atau spesifikasi instance aktual.

    3. Tekan tombol Esc untuk keluar dari mode Sisipkan. Masukkan :wq dan tekan tombol Enter untuk menyimpan dan keluar dari file.

  3. Jalankan perintah berikut secara berurutan untuk menghasilkan data:

    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
    Catatan

    400 menunjukkan jumlah data yang dihasilkan. Unit: GB. Ubah nilai berdasarkan skala cluster.

  4. Jalankan perintah berikut untuk menjalankan uji coba Benchmark:

    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

    Keluaran perintah berikut menunjukkan bahwa pengujian telah selesai. Anda dapat melihat waktu eksekusi beban cluster Spark dalam hasil pengujian.测试结果

    Catatan

    Anda dapat menghapus konfigurasi plugin spark-erdma dari file di direktori conf Spark atau masuk ke cluster Spark lain yang tidak mendukung eRDMA, dan gunakan metode sebelumnya untuk melakukan pengujian Benchmark lainnya. Kemudian, Anda dapat membandingkan dua hasil pengujian untuk mengetahui perbedaan kinerja antara cluster Spark yang mendukung eRDMA dan cluster Spark yang tidak mendukung eRDMA.