Spark集群模式介绍

本文描述了spark如何运行在集群上的简单描述,以便理解相关的组件。

组件

spark应用作为独立进程集合运行在集群上。通过主程序(driver program)的SparkContext对象来协调
需要特别支持的,为了运行在集群上。SparkContext能和几种集群管理器进行连接(spark自己的独立模式下的集群管理器或者mesos/yarm),他们可以跨应用分配资源。一旦连接上,spark获得节点的执行器,它们来运行工作进程为你的应用计算和存储数据。下一步,spark 发送应用程序代码(通过jar和py定义发送给SparkContext的文件 )给这些执行器,最后,SparkContext发送这些任务给执行器进行执行。
Spark集群模式介绍_第1张图片
这个架构有几个很有用的东西需要说明下:
  1. 每个应用得到它自己的执行器进程。它在整个应用执行的过程中存活,在多个线程中执行任务。这种隔离应用有如下优势:在调度方面每个driver调度它自己的任务。在执行方面不同应用的任务运行在不同的jvm中。缺点就是,不同的应用之间不用共享数据除非把他们写入到一个外部的存储系统中。
  2. 底层的集群是不知道spark,只要它能获取了执行器进程,他们就相互通讯,它很容易运行在支持其他应用的集群管理器上。
  3. 因为驱动在集群上调度任务。所以最好是运行和工作结点运行在同一个局域网内遮以接近工作结点。如果发送请求给远程集群,那么最好是用RPC来提交任务而不是离工作结点很远来运行一个驱动。
spark系统目前支持3个集群管理器
1:standalone 
2: mesos
3: yarn

发送代码到集群

发送代码到集群推荐的一种方式就是把它传递到SparkContext的构造函数。它将带着一系列的jar文件和.egg或zip库到工作节点。可以通过Sparkcontext.addJar和addFile来动态的添加新文件发送过去。
addJar addFile的URIS
file:文件的绝对路径,驱动的http文件服务器支持file:/这种URIS,每个执行器都到驱动的http服务器上读取文件。
http,https,ftp,hdfs:
local:以这个开头的URLi意味着每个工作节点都存在一个本地文件。意味着不需要网络IO,在推送大文件到工作节点可以使用这种方式:共享NFS,GlusterFs

注意:jar包和文件在任务执行后需要清理。

监控

http://driver-node:4040

作业调度

spark提供了跨应用的分配资源和在同一个sparkcontxt内部组件分配资源。

术语 解释    
application
构建在spark上面的用户程序,在集群上是有一个driver program和executor来构成                       
driver program
运行主方法的进程,用来创建一个SparkContext
cluster manager
一个外部服务用来获取集群的资源
worker node 集群中能运行程序的任意节点
executor
worker node上用来运行应用的进程,它用来执行任务和把数据保存在内存或者是磁盘中,每个应用都有属于自己的executor
task ​发送到executor的一个任务单元
job
一种并行计算,由很多task组成,并产生输出来响应spark动作
stage 每个job被分成不同的task集合被叫做stage



来自为知笔记(Wiz)


你可能感兴趣的:(Spark集群模式介绍)