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

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

 

Spark设计遵循”一个软件栈满足不同应用场景“的理念,逐渐形成了一整套完整的生态系统,既能够提供内存计算框架,也可以支持SQL即时查询(Spark SQL)、流计算(Spark Streaming)、机器学习(MLlib)和图计算(GraphX)等。Spark还可以部署在资源管理器YARN之上,提供一站式的大数据解决方案。

 Spark生态圈

Spark Core:包含Spark最基础和最核心的功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面向批处理功能。
Spark SQL:是一个用于结构化数据处理的Spark模块,允许开发人员直接处理RDD,同时也可查询Hive、HBase等外部数据源。
Spark Streaming:是一种流计算框架,其核心思想是将流数据分解成一系列短小的批处理作业,每个批处理作业都可以使用Spark Core进行快速处理。
MLlib:提供了常用机器学习算法的实现
GraphX:是Spark中用于图计算的API

spark运行架构时,就是指Spark Core的运行架构

spark运行基本流程

1.当一个spark Application提交时,为应用构建起基本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控,SparkContext可以看做是应用程序连接集群的通道
2.资源管理器为Executor分配资源,并启动Executor进程
3.SparkContext根据RDD的依赖关系构建DAG图,将DAG图提交给DAGScheduler,将DAG图分解成多个Stage,并且计算出各阶段之间的依赖关系,然后把一个个任务集提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行并提供应用程序代码。
4.Task在Executor上运行把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。

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

  Master, Worker;  RDD,DAG; Application, job,stage,task; driver,executor,Claster Manager

--------------------------------------------------

  DAGScheduler, TaskScheduler.

 

 

RDD:是Resilient distributed datasets的简称,中文为弹性分布式数据集;是Spark最核心的模块和类。一个RDD就是一个分布式对象集合,本质上是一个只读的分区记录集合。

Application:用户编写的Spark应用程序。

Job:一个作业包含多个RDD及作用于RDD上的各种操作。在spark rdd中,有action、transform操作,当真正触发action时,才真正执行计算,此时产生一个job任务。

Stage:是作业调度的基本单位。以shuffle为界,当在一个job任务中涉及shuffle操作时,会进行stage划分,产生一个或多个stage。

Task:运行在Executor上的工作单元。 一个stage可能包含一个或者多个task任务,task任务与partition、executor息息相关,即并行度。

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

 

 

 

 

 

 

 

posted @ 2022-03-15 00:03  yoke`  阅读(122)  评论(0)    收藏  举报