3.Spark设计与运行原理,基本操作

1.Spark已打造出结构一体化、功能多样化的大数据生态系统,请用图文阐述Spark生态系统的组成及各组件的功能。

(1)Spark Core:Spark核心组件,它实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed Datasets,RDD)的API定义,RDD是只读的分区记录的集合,只能基于在稳定物理存储中的数据集和其他已有的RDD上执行确定性操作来创建。

(2)Spark SQL:用来操作结构化数据的核心组件,通过Spark SQL可以直接查询Hive、 HBase等多种外部数据源中的数据。Spark SQL的重要特点是能够统一处理关系表和RDD在处理结构化数据时,开发人员无须编写 MapReduce程序,直接使用SQL命令就能完成更加复杂的数据查询操作。

(3)Spark Streaming:Spark提供的流式计算框架,支持高吞吐量、可容错处理的实时流式数据处理,其核心原理是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用 Spark Core进行快速处理。Spark Streaming支持多种数据源,如 Kafka以及TCP套接字等。

(4)MLlib:Spark提供的关于机器学习功能的算法程序库,包括分类、回归、聚类、协同过滤算法等,还提供了模型评估、数据导入等额外的功能,开发人员只需了解一定的机器学习算法知识就能进行机器学习方面的开发,降低了学习成本。

(5) GraphX: Spark提供的分布式图处理框架,拥有图计算和图挖掘算法的API接口以及丰富的功能和运算符,极大地方便了对分布式图的处理需求,能在海量数据上运行复杂的图算法。

(6)独立调度器、Yarn、 Mesos: Spark框架可以高效地在一个到数千个节点之间伸缩计算,集群管理器则主要负责各个节点的资源管理工作,为了实现这样的要求,同时获得最大的灵活性, Spark支持在各种集群管理器( Cluster Manager)上运行, Hadoop Yarn、Apache Mesos以及 Spark自带的独立调度器都被称为集群管理器。

Spark生态系统各个组件关系密切,并且可以相互调用,这样设计具有以下显著优势:

1) Spark生态系统包含的所有程序库和高级组件都可以从 Spark核心引擎的改进中获益。

2)不需要运行多套独立的软件系统,能够大大减少运行整个系统的资源代价。

3)能够无缝整合各个系统,构建不同处理模型的应用。

 

2.请详细阐述Spark的几个主要概念及相互关系:

   RDD,DAG; Application, job,stage,task; Master, worker; driver,executor,Cluster Manager

2.1 RDD,DAG

 RDD是弹性分布式数据集(ResilientDistributed Dataset)的英文缩写,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。

DAG(Directed Acyclic Graph有向无环图)指的是数据转换执行的过程,有方向,无闭环(其实就是RDD执行的流程),

原始的RDD通过一系列的转换操作就形成了DAG有向无环图,任务执行时,可以按照DAG的描述,执行真正的计算(数据被操作的一个过程)。

2.2 Application, job,stage,task

RDD任务切分中间分为:Application、Job、Stage和Task

1)Application:初始化一个SparkContext即生成一个Application;

2)Job:一个Action算子就会生成一个Job;

3)Stage:Stage等于宽依赖的个数加1;

4)Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。

2.3 Master, worker

Master-Worker模式是常用的并行设计模式。核心思想是,系统由两个角色组成,Master和Worker,Master负责接收和分配任务,Worker负责处理子任务。任务处理过程中,Master还负责监督任务进展和Worker的健康状态;Master将接收Client提交的任务,并将任务的进展汇总反馈给Client。

Master对任务进行切分,并放入任务队列;然后,触发Worker处理任务。实际操作中,任务的分配有多种形式,如Master主动拉起Workder进程池或线程池,并将任务分配给Worker;或者由Worker主动领取任务,这样的Worker一般是常驻进程;还有一种解耦的方式,即Master指做任务的接收、切分和结果统计,指定Worker的数量和性能指标,但不参与Worker的实际管理,而是交由第三方调度监控和调度Worker。

2.4 driver,executor,Cluster Manager

(1).运行main函数并且新建SparkContext的程序

(2)Executor:是一个Worker Node上为某应用启动的一个进程,该进程负责运行任务,并且负责将数据存在内存或者磁盘上。每个应用都有各自独立的executor。

(3)Cluster Manager:指的是在集群上获取资源的外部服务。目前有三种类型
1)Standalone:Spark原生的资源管理,由Master负责资源的分配
2)Apache Mesos:与Hadoop mr兼容性良好的一种资源调度框架
3)Hadoop Yarn:主要是指Yarn中的ResourceManager
总的来说,用户提交的程序运行起来就是一个driver,他是一个一段特殊的excutor进程,这个进程除了一般excutor都具有的运行环境外,这个进程里面运行着DAGscheduler Tasksheduler Schedulerbackedn等组件

 

3.在PySparkShell尝试以下代码,观察执行结果,理解sc,RDD,DAG。请画出相应的RDD转换关系图。 

posted @ 2022-03-12 20:44  lokxlok  阅读(41)  评论(0编辑  收藏  举报