gpt4 book ai didi

apache-spark - Spark:整个数据集中在一个执行器中

转载 作者:行者123 更新时间:2023-12-02 22:00:35 25 4
gpt4 key购买 nike

enter image description here

我正在运行一个Spark作业,每个文件有3个100MB大小的文件,由于某种原因,我的Spark UI会将所有数据集集中到2个执行器中,这使该作业运行了19个小时并且仍在运行。
下面是我的 Spark 配置。 spark 2.3是使用的版本。

spark2-submit --class org.mySparkDriver \
--master yarn-cluster \
--deploy-mode cluster \
--driver-memory 8g \
--num-executors 100 \
--conf spark.default.parallelism=40 \
--conf spark.yarn.executor.memoryOverhead=6000mb \
--conf spark.dynamicAllocation.executorIdleTimeout=6000s \
--conf spark.executor.cores=3 \
--conf spark.executor.memory=8G \

我尝试在有效的代码内重新分区,因为这使文件进入20个分区(我使用rdd.repartition(20))。但是我为什么要重新分区,我相信在脚本中指定spark.default.parallelism = 40应该可以让spark将输入文件划分为40个执行器,并在40个执行器中处理该文件。

谁能帮忙。

谢谢,
内图

最佳答案

如果是的话,我假设您正在YARN中运行作业,则可以检查以下属性。

yarn.scheduler.maximum-allocation-mb
yarn.nodemanager.resource.memory-mb
yarn.scheduler.maximum-allocation-vcores
yarn.nodemanager.resource.cpu-vcores


在YARN中,这些属性会影响可基于 spark.executor.cores, spark.executor.memory属性值在NodeManager中实例化的容器数(以及执行程序的内存开销)。

例如,如果一个群集具有10个节点(RAM:16 GB,核心:6),并设置了以下 yarn 属性
yarn.scheduler.maximum-allocation-mb=10GB 
yarn.nodemanager.resource.memory-mb=10GB
yarn.scheduler.maximum-allocation-vcores=4
yarn.nodemanager.resource.cpu-vcores=4

然后使用spark属性 spark.executor.cores=2, spark.executor.memory=4GB,您可以期望得到 2 Executors / Node,因此总计您将获得19个执行程序+ 1个驱动程序容器

如果spark属性为 spark.executor.cores=3, spark.executor.memory=8GB,则您将获得9个执行程序(仅1个执行程序/节点)+1个驱动程序容器

您可以引用 link了解更多详细信息

希望这可以帮助

关于apache-spark - Spark:整个数据集中在一个执行器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58512262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com