【问题标题】:How to define spark submit configuration correctly?如何正确定义火花提交配置?
【发布时间】: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


【解决方案1】:

根据我的调查,这个问题是由于工作分配不平衡造成的。这就是为什么有些 PC 空闲而其他 PC 仍然忙碌的原因。在 Spark 中,需要设计好的算法来平均分配作业。

【讨论】:

    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2017-11-24
    相关资源
    最近更新 更多