采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
拆开来,我都明白,但是从整体的角度看,我就有点不大明白了。特别是对于 executor,这是一个硬件层面还是应用程序层面的啊。还有 executor 是有多个的,这个个数是随意指定的吗,跟分区数有关系吗?还有 job 为什么会有很多 stage 啊
我以onyarn模式来解释:executor就是运行在yarn上的nm中的一个container中的,这不是硬件的概念,这是一哥进程的概念,executor是可以多个的,就是多个可以运行在YARN集群之上。 一个job只要涉及到shuffle必然就是会拆分多个stage的。分区数的决定因素有很多,比如读数据进来默认分区数,你也可手动设置;reducebykey等算子也可以手工传入分区数
executor 个数可以随意指定吗,是不是越多计算得越快?一个 job 分到一堆 executor 上面去执行,那么计算任务怎么分的呢
exe个数是根据你的数据量以及复杂度来评估的,多点一般情况下是好点的,但是太多就是浪费了。1个job产生的stage里面的作业就是在exe上面运行的,计算任务分配就是spark的dagschudler和taskscheduler进行拆分task的
非常感谢!
一个job就是action触发的,一个job可能就会对应1到N个stage,每个stage里面可以包含多个task,你可以跑一个sparkshell,然后通过UI上来观察,就比较好理解了
登录后可查看更多问答,登录/注册
使用Python3对Spark应用程序进行开发调优,掌握Azkaban任务调度
1.2k 16
1.1k 15
992 14
1.0k 12
2.3k 11