开发者学堂课程【大数据 Spark2020最新课程(知识精讲与实战演练)第一阶段:Spark 集群搭建_Spark 集群结构_扩展】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/688/detail/11938
Spark 集群搭建_Spark集群结构_扩展
spark 集群结构进行一个小小的扩展,准备了两个问题
第一个问题:
Spark 程序可以在什么地方运行?
它是可以运行在集群里的,不能说每一次去执行一个很细节很小的任务,都在集群里面运行,所以 Spark 当然也是支持单机模式的,这种单机模式,以往是一般在进行测试,或者再去探索数据的时候,他可能用的比较多一些。
它可以运行在集群中,一些集群,可能是被 Yarn 管理的,有一些集群是被 mesos 管理的,有一些是被 Kubernertes 管理的,因此 Spark 能支持的集群就以下四种
第一种是 Spark 自身的 Standalone
第二种 Hadoop Yarn
第三种 Apache Mesos
第四种 Kubernetes
Spark 可以在单机运行,可以在 Stand alone 集群当中运行,可以在这儿当中运行等等。
第二个问题:
Driver 和 Worker 在什么时候启动,其实问题的本质,是去思考集群的结构。
但是对于问题本身来说,因为 spark 可以运行在不同的集群当中,所以问题也要用不同的视角来去看它,比如说 spark 的运行在自己的集群当中,那么 worker 启动的行为就和它运行在 Yarn 当中会有一定的区别,所以对于这道问题,分开两部分去讲解,第一部分是在 Standalone 当中的表现,第二部分是在 Yarn 当中的表现
在 Spark Standalone 当中的表现:
Worker 什么时候启动,Driver什么时候启动,在哪儿运行,首先,在 Spark Standalone 的集群当中分为两个组建,一个是 Master,一个是 Worker,Master就相当于是前面的Cluster Manager,Worker就相当于前面这张图的 Worker, Master 用于去接收外部提交过来的任务,那么他把任务分发到不同的 worKer 里面去执行,Worker 会去启动 Executor ,实行分发过来的任务,大概是流程,因为集群是 spark 身,所以在启动 spark 集群的时候,Worker就会被创建,这是第一点。
还有一个问题:
Driver program 它是运行在 shell 命令窗口当也可以,它也可以运行在的上窗口当中,运行在的命令行当中。
这种运行模式叫做 Client ,也就是说可以直接本机里面通过在本机里运行的 driver program 去先运行一下的 spark 的MI方法,然后去把 task 划分出来,再和 ClusterManerger 进行交互来去运行这 task。
除了 client 模式不太好管理,比如说 driver 可能需求的资源比较多,或者比较少,没有办法控制所申请的资源
第二种模式:
driver 也可以运行在某个 Worker 当中,也就是运行在某个从节点当中, Driver, Driver,它可以运行在某个 Worker当中,也就是运行在某个从节点当中,跟 Task 是一样的,Task 运行在 worker 当中,Driver 也可以运行在这当中,这是第二种模式,这种模式叫 cluster 模式,特别的运行在 worker 当中,Driver 也可以运行在 worker 当中,这是第二种模式,这种模式叫做 cluster 模式
Driver有两种运行的地方:
第一个:
运行在本机,运行在 shell 中,叫 Client 的模式
第二种:
可以运行在 worker 当中,运行在集群的节点当中,那么这种模式,称之为叫做cluster 模式,这是 spark stand alone 的一个运行。
当 spark 和 yarn 配合的时候,行为应该是怎么样的?
先来看一张图,首先第一点,地方还是会有一个 Client,client 不一定非要指的是 Driver ,有可能只是 Spark 的命令行工具,那个命令行工具里面运行 Driver,那么这种模式叫做 Cluster 模式,那么接下来来看一看啊,当 Client 把任务提交到 Yarn 当中去运行的时候,那么首先是不是和 resource manager 来进行交互,spark 整个的运行的步骤,首先第一点,如果要在 Yarn 当中去执行什么程序的话,首先要去创建一个叫做 Application Master的一个组件,Application Master,来进行整个的汲取资源申请啊,等等这样的一些调度的行为对吧,所以,第一步肯定要先启动Application Master,启动好 Application Master 以后,Application Master,它其中就运行了 Driver。
在和 Yarn 配合的过程当中,Driver 也有两个运行方式
第一种,称之为叫做 Client ,第二种叫做 Cluster,Cluster 方式的运行是运行在 ApplicationMaster 当中的,接下来 Driver 去划分任务,然后把任务通过 Resource Manager 运行到不同的 Node Manager 当中,运行到不同的 Container 里面去运行了 Executor,是这样的一个过程吧。
对刚才内容的一个小小的扩展,主要说了两个问题,第一个问题,spark 的程序可以运行在哪儿,单机和集群集群,集群有四种,第二个问题是 Driver 跟 Worker 什么时候启动,在哪儿启动,分为两种情况,在 Standalone 的模式下是怎么样的,在 Yarn 当中又是怎么样的。