首页 > 试题广场 >

简述Spark任务提交到yarn-cluster上的任务运行

[问答题]
简述Spark任务提交到yarn-cluster上的任务运行过程。
1)spark-submit通过命令行的方式提交任务;
2)任务提交后会和ResourceManager通讯申请启动ApplicationMaster;
3)随后ResourceManager分配container,并在合适的NodeManager上启动ApplicationMaster;
4)ApplicationMaster启动后会创建Driver线程来执行用户的作业;
5)ApplicationMaster继续向ResourceManager申请资源创建Executor;
6)ResourceManager接到资源申请后会分配container,并在合适的NodeManager上启动Executor;
7)Executor启动之后会向Driver进行反向注册;
8)在Executor全部注册完之后Driver开始执行main函数,之后在每执行到Action算子时触发一个job,并根据宽依赖开始划分stage,然后每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。
发表于 2020-11-25 11:00:06 回复(0)

1.由client向ResourceManager提交请求,并上传jar到HDFS上

这期间包括四个步骤:

    a).连接到RM

    b).从RM的ASM(ApplicationsManager)中获得metric、queue和resource等信息。

    c). upload app jar and spark-assembly jar

    d).设置运行环境和container上下文(launch-container.sh等脚本)

2. ResourceManager为该应用程序分配第一个Container,创建Spark ApplicationMaster(每个SparkContext都有一个ApplicationMaster)

3. NodeManager启动ApplicationMaster,并向ResourceManager注册

4. ApplicationMaster从HDFS中找到jar文件,启动SparkContext、DAGscheduler和YARN Cluster Scheduler

5. ApplicationMaster向ResourceManager注册申请container资源

6. ResourceManager通知NodeManager分配Container(每个container对应一个executor)

7. Spark ApplicationMaster直接和container(executor)进行交互,完成这个分布式任务。

    
发表于 2019-09-08 23:30:53 回复(0)