请稍等 ...
×

采纳答案成功!

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

能详细说一下 driver, executor, job, stage, task 之间的关系吗

拆开来,我都明白,但是从整体的角度看,我就有点不大明白了。特别是对于 executor,这是一个硬件层面还是应用程序层面的啊。还有 executor 是有多个的,这个个数是随意指定的吗,跟分区数有关系吗?还有 job 为什么会有很多 stage 啊

正在回答

2回答

我以onyarn模式来解释:executor就是运行在yarn上的nm中的一个container中的,这不是硬件的概念,这是一哥进程的概念,executor是可以多个的,就是多个可以运行在YARN集群之上。 一个job只要涉及到shuffle必然就是会拆分多个stage的。分区数的决定因素有很多,比如读数据进来默认分区数,你也可手动设置;reducebykey等算子也可以手工传入分区数

0 回复 有任何疑惑可以回复我~
  • 提问者 pain7 #1
    executor 个数可以随意指定吗,是不是越多计算得越快?一个 job 分到一堆 executor 上面去执行,那么计算任务怎么分的呢
    回复 有任何疑惑可以回复我~ 2020-06-20 19:42:06
  • Michael_PK 回复 提问者 pain7 #2
    exe个数是根据你的数据量以及复杂度来评估的,多点一般情况下是好点的,但是太多就是浪费了。1个job产生的stage里面的作业就是在exe上面运行的,计算任务分配就是spark的dagschudler和taskscheduler进行拆分task的
    回复 有任何疑惑可以回复我~ 2020-06-20 19:48:31
  • 提问者 pain7 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-06-20 20:14:58
Michael_PK 2020-06-20 19:00:19

一个job就是action触发的,一个job可能就会对应1到N个stage,每个stage里面可以包含多个task,你可以跑一个sparkshell,然后通过UI上来观察,就比较好理解了

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信