![]()
1、cluster模式下ApplicationMaster进程执行的是org.apache.spark.deploy.yarn.ApplicationMaster入口类
main()方法会创建YarnAMClient,YarnAMClient主要作用向ResourceManager注册ApplicationMaster;创建ApplicationMaster实例,调用ApplicationMaster.run()方法启动ApplicationMaster实例
在cluster模式下,run()方法执行runDriver(),runDriver()方法中会单独启动一个线程来执行用户指定的class入口类,通过反射来执行类的main()方法,此时我们的用户代码开始被执行,Driver正式启动
driver启动之后,YarnAMClient会向ResourceManager注册ApplicationMaster,包括AM的hostname,端口,ui地址等。(其实是通过YarnAMClient内部封装的AMRMClient客户端与ResourceManager通信,AMRMClient在org.apache.hadoop.yarn.client.api中)。
- startUserApplication()方法实现如下,主要就是创建一个新线程来执行用户入口类的main方法,同时会将用户传递的参数一并传递进去。此时,就意味着Driver启动了,不过这里Driver并非是一个单独的进程,而是运行在ApplicationMaster中的一个线程。