Todos os produtos
Search
Central de documentação

Elastic Compute Service:Deploy a Spark cluster on eRDMA-enhanced ECS instances

Última atualização: Jul 03, 2026

Crie um cluster Spark com instâncias do ECS aprimoradas por eRDMA e execute o Benchmark para medir o desempenho de processamento de carga com latência ultrabaixa.

Contexto

O Benchmark é uma ferramenta de teste de desempenho que mede o tempo de execução da carga, a taxa de transmissão, o throughput e a utilização de recursos.

Etapa 1: Prepare o ambiente

Configure o cluster Hadoop, instale os drivers necessários e configure o eRDMA antes de executar o teste de Benchmark.

  1. Prepare um ambiente Hadoop. Ignore esta etapa se já existir um cluster Hadoop.

    • Requisitos de hardware e software

      Prepare as seguintes versões do Hadoop e do Spark, além das instâncias do ECS:

      • Versão do Hadoop: Hadoop 3.2.1.

      • Versão do Spark: Spark 3.2.1.

      • Instâncias do ECS

        • Tipo de instância: Consulte Visão geral.

        • vCPUs por instância: 16.

        • Quantidade de instâncias: quatro (um nó mestre e três nós de trabalho).

    • Instalação

  2. Faça login no nó mestre. Consulte Fazer login em uma instância Linux usando o Workbench.

  3. Configure o eRDMA.

    • Instale os drivers necessários. Consulte Ativar eRDMA em instâncias de nível empresarial.

    • Configure as definições de rede.

      1. Abra o arquivo hosts:

        vim /etc/hosts
      2. Pressione I para entrar no modo de inserção e modifique o conteúdo do arquivo:

        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
        Nota

        Substitua os endereços IP pelos endereços reais das suas interfaces eRDMA (ERIs).

      3. Pressione Esc, insira :wq e pressione Enter para salvar e sair.

    • Configure as definições do YARN.

      Nota

      Ignore esta subetapa se a NIC padrão da instância do ECS suportar eRDMA.

      1. Abra o arquivo yarn-env.sh:

        cd /opt/hadoop-3.2.1/etc/hadoop
        vim yarn-env.sh
      2. Pressione I para entrar no modo de inserção e adicione o seguinte conteúdo:

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

        Substitua eth1 pelo nome real da sua ERI.

      3. Pressione Esc, insira :wq e pressione Enter para salvar e sair.

    • Configure o Spark.

      Nota

      Ignore esta subetapa se a NIC padrão da instância do ECS suportar eRDMA.

      1. Abra o arquivo spark-env.sh:

        cd /opt/spark-3.2.1-bin-hadoop3.2/conf
        vim spark-env.sh
      2. Pressione I para entrar no modo de inserção e adicione o seguinte conteúdo:

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

        Substitua eth1 pelo nome real da sua ERI.

      3. Pressione Esc, insira :wq e pressione Enter para salvar e sair.

  4. Inicie o HDFS e o YARN:

    $HADOOP_HOME/sbin/start-all.sh

Etapa 2: Baixe o pacote de instalação do Benchmark

Baixe e extraia o pacote de instalação do Benchmark para obter o plug-in Spark eRDMA e as dependências.

  1. Baixe o pacote de instalação do Benchmark:

    wget https://mracc-release.oss-cn-beijing.aliyuncs.com/erdma-spark/spark-erdma-jverbs.tar.gz
  2. Descompacte o pacote spark-erdma-jverbs.tar.gz:

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

    O pacote contém os seguintes componentes:

    • erdmalib: biblioteca nativa exigida pelo plug-in spark-erdma, correspondente a libdisni.so.

    • plugin-sparkrdma: plug-in Spark RDMA e biblioteca de dependências, correspondentes a spark-eRDMA-1.0-for-spark-3.2.1.jar e disni-2.1-jar-with-dependencies.jar.

Etapa 3: Execute um teste de Benchmark

Configure as rotas de IP e as definições do Spark, gere dados de teste e execute o teste de Benchmark.

  1. Modifique as rotas de IP.

    Nota

    Ignore esta etapa se a NIC padrão da sua instância do ECS suportar 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
    Nota

    Substitua os endereços IP pelo endereço IP do gateway da sua ERI real.

  2. Configure o Spark.

    1. Abra o arquivo spark-jverbs-erdma.conf:

      vim /opt/spark-3.2.1-bin-hadoop3.2/conf/spark-jverbs-erdma.conf
    2. Pressione I para entrar no modo de inserção e modifique o conteúdo do arquivo:

      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
      Nota
      • Defina spark.shuffle.compress como false para obter uma melhor taxa de aceleração.

      • O código de exemplo usa configurações de recursos do Spark para uma instância do ECS com 32 vCPUs e 128 GB de memória. Ajuste spark.executor.instances, spark.executor.memory, spark.executor.cores e spark.sql.shuffle.partitions conforme a escala do seu cluster ou as especificações da instância.

    3. Pressione Esc, insira :wq e pressione Enter para salvar e sair.

  3. Gere os dados:

    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
    Nota

    400 especifica o volume de dados em GB. Ajuste conforme a escala do seu cluster.

  4. Execute o teste de 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

    A saída a seguir indica a conclusão do teste. O resultado exibe o tempo de execução da carga do cluster Spark.Test result

    Nota

    Para comparar o desempenho do eRDMA, remova as configurações do plug-in spark-erdma do diretório conf do Spark ou utilize um cluster Spark sem eRDMA. Em seguida, execute o mesmo teste de Benchmark e compare os resultados.