简介
spark的yarn运行模式根据Driver在集群中的位置分成两种:
1)yarn-client 客户端模式
2)yarn-cluster 集群模式
yarn模式和standalone模式不同,standalone模式需要启动spark独立集群,这样SparkContext才能与Master进行交互通信。而yarn模式的资源管理全部托管给的ResourceManager了,所以它不需要启动spark独立集群,那么也就意味着你无法访问http://master:8080这个页面了。
yarn集群模式
spark的yarn集群模式,Driver运行在Application Master上,Application Master进程同时负责驱动我们的代码程序和从ResourceManager申请资源。由于它直接运行在yarn的Container当中,所以并不需要客户端,客户端可以在提交完毕之后就关闭,如图:
1)客户端将生成作业信息并提交给ResourceManager
2)ResourceManager会选择一个NodeManager去启动container,并且把ApplicationMaster分配给它去运行
3)NodeManager接收到以后就会启动ApplicationMaster并初始化dag作业,此时NodeManager就成为Driver
4)ApplicationMaster向ResourceManager申请资源
5)ResourceManager分配资源的同时通知其它NodeManager启动相应的executor去执行task,并反馈执行情况
6)执行完毕,释放资源
yarn客户端模式
yarn客户端模式和yarn集群模式的区别很明显,就是在于ApplicationMaster仅仅负责从ResourceManager申请资源,而驱动代码程序的任务还是由Client客户端负责,所以Client客户端在整个过程中保持运行不会像集群模式一样提交完就关闭,如图:
1)客户端生成作业信息并提交给ResourceManager
2)ResourceManager在本地NodeManager启动container并分配运行ApplicationMaster
3)Client节点会初始化dag作业,通过ApplicationMaster去向ResourceManager申请资源
4)Client节点将任务分发给executor去执行,executor反馈执行情况
5)任务执行完毕,释放资源
yarn-client和yarn-cluster的区别
1)在yarn-cluster模式中,Driver运行在ApplicationMaster上,而在yarn-client模式中Driver运行在Client上
2)yarn-cluster模式中,Client提交完可以直接关闭,yarn-client模式中保持运行并和executor通信
3)yarn-cluster模式中,ApplicationMaster负责资源申请和驱动程序运行,yarn-client模式中只负责资源申请,运行程序由Client负责
4)yarn-cluster适合生产环境,而yarn-client适合交互和调试
参考书籍:《spark大数据技术与应用》