spark设计与运行原理,基本操作

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

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

 

Spark 生态系统主要包含了 Spark Core 、 Spark SQL 、 Spark Streaming 、 MLlib 和 GraphX等组件,各组件的功能如下:

1、 Spark Core

Spark Core 包含 Spark 的基本功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面向批数据处理。 Spark 建立在统一的抽象 RDD 之上,使其可以以基本一致的方式应对不同的大数据处理场景。

2、  Spark SQL

Spark SQL 允许开发人员直接处理 RDD ,同时也可查询 Hive 、 HBase 等外部数据源。 Spark SOL 的一个重要特点是其能够统一处理关系表和 RDD ,使得开发人员不需要自己编写 Spark 应用程序,开发人员可以轻松地使用 SQL 命令进行查询,并进行更复杂的数据分析。

3、  Spark Streaming

Spark Streaming 支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用 Spark Core 进行快速处理。 Spark Streaming 支持多种数据输人源,如 Kafka 、 Flume 和 TCP 套接字等。

4、  MLlib

MLlib 提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只要具备一定的理论知识就能进行机器学习的工作。

5、  GraphX

GraphX 是 Spark 中用于图计算的 API ,可认为是 Pregel 在 Spark 上的重写及优化, GraphX 性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。

二、请详细阐述Spark的几个主要概念及相互关系。

1、Master:控制、管理和监督整个Spark集群。

2、Worker:集群的工作节点,可以运行Application代码的节点,接收mater的命令并且领取运行任务,同时汇报执行的进度和结果给master,节点上运行一个或者多个Executor进程。

3、RDD:是分布式内存的个抽象概念,提供了一种高度受限的共享内存模型。

DAG:反映 RDD 之间的依赖关系。

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

5、Job:包含很多task的并行计算,可以认为是Spark RDD里面的action,每个action的计算会生成一个job。用户提交的Job会提交给DAGScheduler,Job会被分解成Stage和Task。

6、stage:是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”,或者也被称为“任务集”。

7、Task:运行在 Executor 上的工作单元。

8、Driver:控制一个应用的执行。

9、Executor:是运行在工作节点( Worker Node )上的一个进程,负责运行任务,并为应用程序存储数据。

10、Claster Manager:集群的资源管理器,在集群上获取资源的外部服务。

11、DAGScheduler:根据job构建基于stage的DAG,并提交stage给TaskScheduler。

12、TaskScheduler:将Taskset提交给Worker Node集群运行并返回结果。

 

相互关系:

 

 

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

代码运行如下:

 

 

 

 

 

 

 

 RDD转换关系图如下:

posted @ 2022-03-14 13:54  yumus  阅读(110)  评论(0编辑  收藏  举报