我在调整Yarn集群上执行的Spark作业时遇到问题。我有一种感觉,我没有得到集群的大部分,此外,我的工作也失败了(执行者总是被删除)。
我有以下设置:
- 4台机器
- 每台机器都有10GB的RAM
- 每台机器有8个核心
- 8GB的RAM分配给纱线作业
- 为纱线作业分配了14个(共16个)虚拟芯
我已经使用不同的设置运行了我的spark作业(实际上连接到jupyter笔记本电脑),例如
pyspark --master yarn --num-executors 7 --executor-cores 4 --executor-memory 3G
pyspark --master yarn --num-executors 7 --executor-cores 7 --executor-memory 2G
pyspark --master yarn --num-executors 11 --executor-cores 4 --executor-memory 1G
我尝试过不同的组合,但似乎都不起作用,因为我的遗嘱执行人被摧毁了。此外,我在某个地方读到,将spark.yarn.executor.memoryOverhead
增加到600MB是一个很好的方法,可以避免执行人员松散(我也这样做了),但这似乎没有帮助。我应该如何设置我的工作?
此外,当我查看ResourceManager UI时,它说我的工作vcores使用了8个vcores,总共56个,这让我很困惑。我似乎每个执行器都使用一个核心,但我不明白为什么?
还有一件事,当我设置作业时,当我从HDFS读取数据以获得最大性能时,我应该指定多少分区?