请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Spark并行与资源分配的问题

讲师好,
我这边试了一下。分区数,executor num,cores。决定executor和并行数的规则。
executor的个数为三者中最小的那个。
若分区数最少,并行数为1*分区数。
否则,并行数为executor.cores *executor。
不知道这个总结是否正确?

图片描述

另外还有两个问题
1.当我的worknode 只有1个,为8Cores,且分区为24。我设置了executor num=4,executor.cores=3。Stage中看到12个并行,而且Executors显示的为12Cores。请问这个8cores是自己分为12份的吗。
图片描述
2.ambari 我看到的CPU占用率并不高。我向请问并行程序和CPU 占用率 之间的关系是什么?WorkerNode如下,不知道头节点的需不需要看。
图片描述

正在回答 回答被采纳积分+3

1回答

提问者 慕粉2040365749 2020-03-26 15:52:38

资源分配补充测试了一下。我使用6台  8cores 机器。代码分区24. executor=16,executor.cores=3。executor只出现了9个,分别的并行为2或3.

所以分区数不是executor*cores的倍数,则分配就不是很规律。如果都没有两倍,则executor启动的个数也不会达到设置的值。

0 回复 有任何疑惑可以回复我~
  • 你这使用的是Standalone模式吗?还是YARN模式?这个地方要确认下
    回复 有任何疑惑可以回复我~ 2020-03-26 16:54:26
  • 提问者 慕粉2040365749 回复 Michael_PK #2
    yarn,请教一下spark.default.parallelism 是不是在yarn 模式下不生效。所以我是在代码中repartition。我用的是paas的spark,azure 上的hdinsight。
    回复 有任何疑惑可以回复我~ 2020-03-27 08:48:23
  • Michael_PK 回复 提问者 慕粉2040365749 #3
    YARN模式,我先纠正几个地方,对于YARN来说,其实executor是跑在container里面;你说的6台8core值得应该就是YARN的节点吧? 
    executor个数增加可以增加并行度,同理每个executor的core数增加也是可以添加并行度的
    回复 有任何疑惑可以回复我~ 2020-03-27 13:28:00
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信