如何正确定义 spark 提交配置?
How to define spark submit configuration correctly?
我 运行 我的 spark 程序在通过 LAN 连接的 6 台 PC(1 台主机和 5 台工人)上运行。它们每个都配备了 6 CPU 个内核和 8GB RAM。下面是我的火花提交配置。根据我的配置,我有5个分区,我希望每个执行器都占用1个分区并在一个不同的工作节点中执行,以便所有工作节点都忙。但是,当我 运行 程序时,1 台 worker PC 有 100% CPU 和内存利用率,2 台 PC 有 25% 利用率,2 台 PC 有 0% 利用率意味着它是空闲的(我使用任务管理器调查).输出是正确的,但我希望更快 运行ning 时间。那么,我的 spark 提交配置有什么问题?我如何定义所有配置,以便所有内容均等分布且没有闲置的 PC?
我用这个 link 作为参考: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
根据我的调查,这个问题是因为工作分配不平衡。这就是为什么有些 PC 闲置而其他 PC 仍然忙碌的原因。需要设计好的算法在Spark中平均分配作业。
我 运行 我的 spark 程序在通过 LAN 连接的 6 台 PC(1 台主机和 5 台工人)上运行。它们每个都配备了 6 CPU 个内核和 8GB RAM。下面是我的火花提交配置。根据我的配置,我有5个分区,我希望每个执行器都占用1个分区并在一个不同的工作节点中执行,以便所有工作节点都忙。但是,当我 运行 程序时,1 台 worker PC 有 100% CPU 和内存利用率,2 台 PC 有 25% 利用率,2 台 PC 有 0% 利用率意味着它是空闲的(我使用任务管理器调查).输出是正确的,但我希望更快 运行ning 时间。那么,我的 spark 提交配置有什么问题?我如何定义所有配置,以便所有内容均等分布且没有闲置的 PC? 我用这个 link 作为参考: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
根据我的调查,这个问题是因为工作分配不平衡。这就是为什么有些 PC 闲置而其他 PC 仍然忙碌的原因。需要设计好的算法在Spark中平均分配作业。