如何增加 yarn application 的并行度

How to increase yarn application parallelism

我正在尝试在 EMR Spark 上 运行 多个 yarn 应用程序,但我无法一次 运行 超过 5 个应用程序。

我正在为 Spark 集群使用以下配置:

大师 = r5.2xlarge

工人 = r5.12xlarge 384 GB 内存 48 个虚拟内核 部署模式=集群

JSON

{
        "Classification":"spark-defaults",
        "ConfigurationProperties":{
          "spark.executor.extraJavaOptions": "-XX:+UseG1GC -XX:+UnlockDiagnosticVMOptions -XX:+G1SummarizeConcMark -XX:InitiatingHeapOccupancyPercent=35 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:OnOutOfMemoryError='kill -9 %p'",
          "spark.driver.extraJavaOptions": "-XX:+UseG1GC -XX:+UnlockDiagnosticVMOptions -XX:+G1SummarizeConcMark -XX:InitiatingHeapOccupancyPercent=35 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:OnOutOfMemoryError='kill -9 %p'",
          "spark.scheduler.mode":"FIFO",
          "spark.eventLog.enabled":"true",
          "spark.serializer":"org.apache.spark.serializer.KryoSerializer",
          "spark.dynamicAllocation.enabled":"false",
          "spark.executor.heartbeatInterval":"60s",
          "spark.network.timeout": "800s",
          "spark.executor.cores": "5",
          "spark.driver.cores": "5",
          "spark.executor.memory": "37000M",
          "spark.driver.memory": "37000M",
          "spark.yarn.executor.memoryOverhead": "5000M",
          "spark.yarn.driver.memoryOverhead": "5000M",
          "spark.executor.instances": "17",
          "spark.default.parallelism": "170",
          "spark.yarn.scheduler.reporterThread.maxFailures": "5",
          "spark.storage.level": "MEMORY_AND_DISK_SER",
          "spark.rdd.compress": "true",
          "spark.shuffle.compress": "true",
          "spark.shuffle.spill.compress": "true"
        }
      }

如何增加 EMR Spark 中并行 运行ning Yarn 应用程序的数量?

看看集群主节点上的Yarn ui 运行ning。集群中是否使用了所有 CPU 和所有内存?增加并发性通常意味着 运行ning 中的每个单独应用程序只能使用集群的一小部分。此外,因为您已禁用动态执行程序分配并将执行程序的数量设置为 17,您可能一次只能 运行 一个 spark 应用程序。