1、spark on yarn
两种模式:
client模式(测试)
cluster模式(生产常用)
区别:
client模式的driver是运行在客户端。
cluster模式的driver运行在NodeManager的MRApplicationMaster中。
2、client模式
启动:
spark-submit --master yarn
spark-submit --master yarn-client
spark-submit --master yarn --deploy-mode client
执行流程:
1、创建sparkContext对象时,客户端先在本地启动driver,然后客户端向ResourceManager节点申请启
动应用程序的ApplicationMaster。
2、ResourceManager收到请求,找到满足资源条件要求的NodeManager启动第一个Container,然
后要求该NodeManager在Container内启动ApplicationMaster。
3、ApplicationMaster启动成功则向ResourceManager申请资源,ResourceManager收到请求给
ApplicationMaster返回一批满足资源条件的NodeManager列表。
4、Applicatio拿到NodeManager列表则到这些节点启动container,并在container内启动executor,executor启动成功则会向driver注册自己。
5、executor注册成功,则driver发送task到executor,一个executor可以运行一个或多个task。
6、executor接收到task,首先DAGScheduler按RDD的宽窄依赖关系切割job划分stage,然后将stage以TaskSet的方式提交给TaskScheduler。
7、TaskScheduler遍历TaskSet将一个个task发送到executor的线程池中