【发布时间】:2021-07-25 05:05:54
【问题描述】:
我在通过 LAN 连接的 6 台 PC(1 台主机和 5 台工作机)上运行我的 spark 程序。它们每个都配备了 6 个 CPU 内核和 8GB RAM。下面是我的火花提交配置。根据我的配置,我有 5 个分区,我希望每个 executor 将占用 1 个分区并在一个不同的工作节点中执行,以便所有工作节点都忙。但是,当我运行程序时,1 台工作 PC 的 CPU 和内存利用率为 100%,2 台 PC 的利用率为 25%,2 台 PC 的利用率为 0%,这意味着它处于空闲状态(我使用任务管理器进行了调查)。输出是正确的,但我希望运行时间更快。那么,我的 spark 提交配置有什么问题?如何定义所有配置,以便在没有空闲 PC 的情况下平均分配所有配置? 我使用此链接作为参考:https://medium.com/expedia-group-tech/part-3-efficient-executor-configuration-for-apache-spark-b4602929262
spark-submit --class MainApp --master spark://192.168.6.229:7077 --deploy-mode client --num-executors 5 --executor-memory 6g --executor-cores 6 --driver-memory 6g --conf “spark.driver.memoryOverhead=6g” --conf "spark.kryoserializer.buffer.max=128m" C:\spark-3.1.1-bin-hadoop2.7\a.jar C:\spark-3.1.1-bin-hadoop2.7\Dataset\b.txt 0.1 5
【问题讨论】:
-
从您的设置看来,完全不使用 spark 可以获得最佳性能。这是一个非常小的设置,网络通信序列化和协调的开销相当大。
-
我该怎么办?请告诉我@ArnonRotem-Gal-Oz
-
你想做什么:)?
-
我希望我的所有工作节点都能高效工作。例如,我有 5 个工作节点。我希望每个节点有 1 个执行器,每个执行器处理 1 个分区。所以,5 个工作节点,5 个执行器,5 个分区。或者,也许您可以告诉我它的最佳配置。我只希望我的程序分布良好。 @ArnonRotem-Gal-Oz
-
我从这个问题中得到了答案——你的代码在做什么
标签: scala apache-spark distributed-computing