Spark运行模式及原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_29726869/article/details/82345546

Spark运行模式及原理

一、运行模式概述

(一)Spark运行模式列表

目前最为常用的Spark运行模式有:

-local[N]: 本地模式,使用N个线程。本地线程方式运行,主要用于开发调试Spark应用程序

- Standalone:利用Spark自带的资源管理与调度器运行Spark集群,采用Master/Slave结构,为解决单点故障,可以采用ZooKeeper实现高可靠(High Availability,HA)

- local cluster[worker,core,Memory]  伪分布式,可以培植所需要启动的虚拟工作节点数量,以及每个工作节点所管理的CPU数量和内存尺寸。

- Apache Mesos:运行在著名的Mesos资源管理框架基础之上,该集群运行模式将资源管理交给Mesos,Spark只负责进行任务调度和计算

- Hadoop YARN :集群运行在Yarn资源管理器上,资源管理交给Yarn,Spark只负责进行任务调度和计算

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计算方面

(2)Spark组件(Components)

一个完整的Spark应用程序,如前一节当中SparkWordCount程序,在提交集群运行时,它涉及到如下图所示的组件:

 

各Spark应用程序以相互独立的进程集合运行于集群之上,由SparkContext对象进行协调,SparkContext对象可以视为Spark应用程序的入口,被称为driver program,SparkContext可以与不同种类的集群资源管理器(Cluster Manager),例如Hadoop Yarn、Mesos等 进行通信,从而分配到程序运行所需的资源,获取到集群运行所需的资源后,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模式解析

猜你喜欢

转载自blog.csdn.net/qq_29726869/article/details/82345546