看了忘,忘了有看,然而又忘了,很烦......
什么 app master 、resourceManage、nodeManage、yarn-cluster、yarn-client...(通通全是名字,真的很烦......)
稳住,直接干......
Spark on yarn有分为两种模式
- yarn-cluster
- yarn-client
基本概念
- resourceManage:
首先是yarn的概念,负责yarn上的资源管理(和spark无关,只要有yarn就会有) - nodeManage:
和resourceManage是对应的,也是yarn的概念,负责yarn上具体干活的(也和spark无关) - application Master:
在集群上每个application(应用程序)运行都会首先启动一个进程(application master),它是以后用程序的启动的第一个容器,负责和resourceManage打交道,应请求资源,获取资源后告诉nodeManage开始工作; - client:
程序开始执行的地方
从广义上讲
yarn-cluster适用于生产环境;而yarn-client适用于交互和调试,也就是希望快速地看到application的输出。
从深层次的含义讲
此行只是为了对应上面的从广义上讲(别生气,看下面.....)
一、yarn-cluster模式
盗个图先:
image.png
详细步骤:
1、spark 提交application 到yarn上(判断参数是否争取,设置名字,读取配置,设置环境变量等);
2、yarn 为程序在任意一台nodeManage上启动applicationMaster(nodeManage选取是任意的,实现不知道)
3、程序初始化sparkContext,由此nodeManage便作为此程序的driver端;
4、application master 向resourceManage申请资源、地址等;
5、application master 向申请到的nodeManage启动executor运行task;
6、初始化之后的sparkcontext和nodeManage进行消息通讯(心跳机制)
备注:
- nodeManage上的executor 和 application master 进程是可以共存的,互不影响;
- client提交程序到yarn上之后 是可以直接关闭client的,因为程序已经在跑了;
二、yarn-client模式
再次盗个图先
原谅我,向画图的人致敬
过程略:
yarn-client的不同于是driver端的运行地方不一样;
小结:
- yarn-cluster模式适合运行自生产环境中,yarn-client模式适合调试模式(他不是集群,它只是把程序提交到集群上运行)
- yarn-client模式的driver和client在一起(client关了,driver也就不存在了)
- yarn-client模式的applicationmaster和yarn-clustor的application Master 一样是在yarn的nodemanage上任意选择的;
- yarn-client模式的程序监控是靠client来完成的,yarn-cluster模式的程序是靠application master几点的driver监控的(所以运行结果的打印yarn-client模式在client下,yarn-cluster模式在applicationmaster 所在的节点上)
注意:spark-shell 和 spark-sql 不能运行在yarn-cluster 模式,只能运行在local和yarn-client 模式上
网友评论