spark基础入门-集群模式

看了忘,忘了有看,然而又忘了,很烦......

什么 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 模式上

你可能感兴趣的:(spark基础入门-集群模式)