大数据学习之路68-spark各个进程的作用简介与yarn的对比

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37050372/article/details/82527173

我们之前知道了客户端为了连接到Master,需要指定--master,但是我们如果使用高可用的话,master有可能有多个。那我们到底连接哪个?我们不知道,所以我们就都写上。我们甚至还可以通过--executor-memory指定以后真正执行任务的内存有多大

bin/spark-shell --master spark://marshal7077,marshal01:7077
--executor-memory 512mb --total-executor-cores 5

这样SparkSubmit向Master提交任务的时候就会告诉Master执行任务需要多少资源。然后Master就会看哪些机器符合我们需要的资源,只有满足这些要求Master才能分配任务,那么Master又是怎么知道哪些Worker有足够的资源呢?因为Worker在最开始的时候会向Master注册,Worker已经把自己的计算资源告诉Master了.

接下来就是Master和Worker进行RPC通信了。那么这个RPC通信的作用是什么呢?就是Master告诉Worker再启动一个executor子进程,而executor启动之后是会和SparkSubmit建立通信的。这样当触发任务的时候,SparkSubmit就会将任务提交到executor执行了。

这一整套流程其实和提交任务到yarn上执行特别相似。

客户端提交任务到yarn上,启动MRAppMaster,MRAppMaster向resource manager申请资源,这样MrAppMaster就可以和符合资源条件的node manager建立连接,然后他将任务下发到node manager上,之后node manager就会启动yarn child子进程,执行任务。当有一个map task执行完之后,MrAppMaster就会向resource manager申请执行reduce的资源,当所有的map task执行完之后,reduce也就领取到了所有的任务。任务执行完之后,MrAppMaster就会向rsource manager申请释放资源。

Master负责资源调度(决定在哪些Worker上启动executor),监控Worker  --->相当于resource manager

Worker负责启动执行任务的进程(executor),并且将当前机器的信息通过心跳汇报给Master -->相当于node manager

executor负责执行计算任务----->相当于yarn child

SparkSubmit负责向Master提交任务并申请资源,然后该任务下的Executor跟SparkSubmit进行通信,监控Executor -->AppMaster

猜你喜欢

转载自blog.csdn.net/qq_37050372/article/details/82527173