我正在尝试在 EMR Spark 上运行多个纱线应用程序,但我无法一次运行超过 5 个应用程序。
我正在为Spark Cluster使用以下配置:
主控 = r5.2xlarge
工作线程 = r5.12xlarge384 GB 内存48 个虚拟内核部署模式 = 群集
杰伦
{
"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 中并行运行的纱线应用程序的数量?
看看在集群的主节点上运行的 Yarn UI。 群集中是否已使用所有 CPU 和所有内存? 增加并发性通常意味着正在运行的每个应用程序只能使用集群的一小部分。 此外,由于已禁用动态执行程序分配并将执行程序数设置为 17,因此一次可能只能运行一个 Spark 应用程序。