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)进行交互,完成这个分布式任务。