Spark实践项目3:Spark运行模式及原理

一、运行模式概述
本节部分内容源自官方文档:http://spark.apache.org/docs/latest/cluster-overview.html
(一)Spark运行模式列表

目前最为常用的Spark运行模式有:
- local[N]: 本地模式,使用N个线程。 本地线程方式运行,主要用于开发调试Spark应用程序
- Standalone :利用Spark自带的资源管理与调度器运行Spark集群,采用Master/Slave结构,为解决单点故障,可以采用ZooKeeper实现高可靠(High AvailabilityHA)
- local cluster[worker,core,Memory]  伪分布式,可以培植所需要启动的虚拟工作节点数量,以及每个工作节点所管理的CPU数量和内存尺寸。
- Apache Mesos :运行在著名的Mesos资源管理框架基础之上,该集群运行模式将资源管理交给MesosSpark只负责进行任务调度和计算
- Hadoop YARN : 集群运行在Yarn资源管理器上,资源管理交给YarnSpark只负责进行任务调度和计算
Spark 运行模式中Hadoop YARN的集群运行方式最为常用,本课程中的第一节便是采用Hadoop YARN的方式进行Spark集群搭建。如此Spark便与Hadoop生态圈完美搭配,组成强大的集群,可谓无所不能。

Spark://hostname:port   Standalone模式,需要部署Spark到相关节点,URL为Spark Master主机地址和端口。
Mesos://hostname:port  Mesos模式,需要部署Spark和Mesos到相关节点,URL为Mesos主机地址和端口。
YARN standaone/YARN cluster   YARN模式一,主程序逻辑和任务都运行在YARN集群中。
YARN client  YARN模式二,主程序逻辑运行在本地,具体任务运行在YARN集群中。
WEB 控制台: http://master:50070 磁盘方面; http://master:8080 计算方面

2Spark组件(Components
 
一个完整的Spark应用程序,如前一节当中SparkWordCount程序,在提交集群运行时,它涉及到如下图所示的组件:
 
Spark应用程序以相互独立的进程集合运行于集群之上,由SparkContext对象进行协调,SparkContext对象可以视为Spark应用程序的入口,被称为driver programSparkContext可以与不同种类的集群资源管理器(Cluster Manager),例如Hadoop YarnMesos等 进行通信,从而分配到程序运行所需的资源,获取到集群运行所需的资源后,SparkContext将得到集群中其它工作节点(Worker Node) 上对应的Executors (不同的Spark应用程序有不同的Executor,它们之间也是独立的进程,Executor为应用程序提供分布式计算及数据存储功能),之后SparkContext将应用程序代码分发到各Executors,最后将任务(Task)分配给executors执行。

(二)Spark基本工作流程
      

      以SparkContext为程序运行的总入口,在SC初始化过程中,Spark会分别创建DAGScheduler作业调度和TaskScheduler任务调度模块。
      其中作业调度模块是基于任务阶段的高层调度模块,它为每个Spark作业计算具有依赖关系的多个调度阶段(通常根据shuffle来分),然后为每个阶段构建出一组具体的任务(通常会考虑数据本地性等),然后以TaskSets(任务组)的形式提交给任务调度模块来具体执行。而任务调度模块负责具体启动任务、监控和汇报任务运行情况。
      作业调度模块与具体部署运行模式无关。
      整个Spark程序的运行,就是DAGScheduler把Job划分为不同的Stage,提交TaskSet给TaskScheduler,进而提交给Executor执行(符合数据本地性),每个Task会计算RDD中的一个Partition,基于该Partition来具体执行我们定义的一系列同一个Stage内部的函数。直到程序运行完成。


(三)相关基本类
      所有的任务调度模块都是基于TaskScheduler及SchedulerBackend这两个接口的(Trait)。负责具体Task的运行,遵循数据本地性。 

(四)Client模式解析

(五)Cluster模式解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值