vlambda博客
学习文章列表

聊一聊大数据处理框架Spark


更多精彩 第一时间直达 不迷路



聊一聊大数据处理框架Spark




1. 概念 


Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。 

2. 核心架构 


聊一聊大数据处理框架Spark


Spark Core 

包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的 

Spark SQL 

提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。 

Spark Streaming 

对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据 

Mllib 

一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。 

GraphX 

控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作 


3. 核心组件 


聊一聊大数据处理框架Spark


Cluster Manager-制整个集群,监控worker 

在standalone模式中即为Master主节点,控制整个集群,监控worker。在YARN模式中为资源管理器 

Worker节点-负责控制计算节点 

从节点,负责控制计算节点,启动Executor或者Driver。 

Driver:运行Application 的main()函数 

Executor:执行器,是为某个Application运行在worker node上的一个进程 


4. SPARK编程模型 


聊一聊大数据处理框架Spark


Spark 应用程序从编写到提交、执行、输出的整个过程如图所示,图中描述的步骤如下: 

1. 用户使用SparkContext提供的API(常用的有textFile、sequenceFile、runJob、stop等)编写Driver application程序。此外SQLContext、HiveContext及StreamingContext对SparkContext进行封装,并提供了SQL、Hive及流式计算相关的API。 

2. 使用SparkContext提交的用户应用程序,首先会使用BlockManager和BroadcastManager将任务的Hadoop配置进行广播。然后由DAGScheduler将任务转换为RDD并组织成DAG,DAG还将被划分为不同的Stage。最后由TaskScheduler借助ActorSystem将任务提交给集群管理器(Cluster Manager)。 

3. 集群管理器(ClusterManager)给任务分配资源,即将具体任务分配到Worker上,Worker创建Executor来处理任务的运行。Standalone、YARN、Mesos、EC2等都可以作为Spark的集群管理器。 

26.1.5. SPARK计算模型 

RDD可以看做是对各种数据计算模型的统一抽象,Spark的计算过程主要是RDD的迭代计算过程。RDD的迭代计算过程非常类似于管道。分区数量取决于partition数量的设定,每个分区的数据只会在一个Task中计算。所有分区可以在多个机器节点的Executor上并行执行。 


5. SPARK计算模型 

RDD可以看做是对各种数据计算模型的统一抽象,Spark的计算过程主要是RDD的迭代计算过程。RDD的迭代计算过程非常类似于管道。分区数量取决于partition数量的设定,每个分区的数据只会在一个Task中计算。所有分区可以在多个机器节点的Executor上并行执行。 


聊一聊大数据处理框架Spark


6. SPARK运行流程 


聊一聊大数据处理框架Spark


1. 构建Spark Application的运行环境,启动SparkContext 

2. SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend, 

3. Executor向SparkContext申请Task 

4. SparkContext将应用程序分发给Executor 

5. SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行 

6. Task在Executor上运行,运行完释放所有资源 


7. SPARK RDD流程 



聊一聊大数据处理框架Spark


1. 创建RDD对象 

2. DAGScheduler模块介入运算,计算RDD之间的依赖关系,RDD之间的依赖关系就形成了DAG 

3. 每一个Job被分为多个Stage。划分Stage的一个主要依据是当前计算因子的输入是否是确定的,如果是则将其分在同一个Stage,避免多个Stage之间的消息传递开销 


8. SPARK RDD 


(1)RDD的创建方式 

1)从Hadoop文件系统(或与Hadoop兼容的其他持久化存储系统,如Hive、Cassandra、HBase)输入(例如HDFS)创建。 

2)从父RDD转换得到新RDD。 

3)通过parallelize或makeRDD将单机数据创建为分布式RDD。 

(2)RDD的两种操作算子(转换(Transformation)与行动(Action)) 

对于RDD可以有两种操作算子:转换(Transformation)与行动(Action)。 

1) 转换(Transformation):Transformation操作是延迟计算的,也就是说从一个RDD转换生成另一个RDD的转换操作不是马上执行,需要等到有Action操作的时候才会真正触发运算。 




2)行动(Action):Action算子会触发Spark提交作业(Job),并将数据输出Spark系统。 







上一篇: