余老师带你学习大数据-Spark快速大数据处理第六章第二节Spark编程模型与Spark基本架构

Spark编程模型与Spark基本架构

在这里插入图片描述

在程序上创建Spark Context,在上下文定义一系列的数据处理函数,加载数据的处理方式。在客户端有个Driver Application,调度编译程序执行,包括ActorSystem、Block Manager、BroadcastManager、TaskSchedule、DAGScheduler。用户通过SparkContext提供的API进行编写程序,会首先使用Block Manager和BroadcastManager将任务进行广播,广播的是任务的配置信息。然后由DAGScheduler将一个应用当成job,一个job有一个DAG组成,然后由ActorSystem去提交DAG给集群运行,然后,集群的管理器分配资源。Worker里面有个执行器,由执行器去执行任务。TaskScheduler调度Worker去执行。比如说MapReduce,被分解成一个个的Task,每个Task运行在某个容器上,Cluster Manager通过TaskScheduler执行Executor程序。

Spark基本框架

在这里插入图片描述

有很多个Driver因为要提交很多的app,客户端可以有多用户系统,客户端可以向Cluster Manager去提交任务,我们的任务不一定运行在Standalone端,可以在YARN、Mesos、EC2端,然后由Cluster Manager调度Executor去执行程序。

SparkContext

在这里插入图片描述

第一个是Python定义的Spark Context形式,第二个是Scala定义的,最后一个是java定义的,他们的定义形式是一样的,表现形式是不一样的。先设置一个conf在新建一个context。

任务调度

在这里插入图片描述

任务调度分为两部分,DAGScheduler和TaskScheduler。DAGScheduler负责将图划分为各个阶段,提交每个阶段。Spark底层仍然借助了MapReduce形式,因为在做大数据处理,Map和Reduce的思想目前还是无法超越的,ADG是有流程的。将TaskSet提交给TaskScheduler,和Cluster manager交互,TaskLaunch去申请Worker容器,容器里有执行器去执行每个任务,最后,将结果按照一定的各式存储。

部署模式

在这里插入图片描述

Spark的部署模式有多种,有Standalone,也就是自己有一个master,在我们的集群里,app-13是master,app-12和app-11是worker组成了一个主从的集群。

计算引擎

在这里插入图片描述

Tez是用Map和Reduce做逻辑的形式,然后做join,底层的机制仍然是MapReduce。Hive也是MapReduce,右边是通过解析执行计划,得到结果,仍然是进入MapReduce。因为Hive的底层是Tez,Tez也是通过MapReduce的。

在这里插入图片描述

Spark也是一样的,将userData和joined相当于是做Map,events相当于是reduce,在events中拉取数据。MapReduce目前来说是大数据最核心的、有力的思想,还没有过时。

详细学习内容可观看Spark快速大数据处理扫一扫~~~或者引擎搜索Spark余海峰
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45810046/article/details/109764419