目录:
SparkCore架构
Spark架构组成
数据多了,因此需要集群,数据都是存放在HDFS
若是在磁盘处理,则使用Hadoop中的MapReduce
若是在内存处理,则使用Spark…
因此Spark的原理就是在内存处理时代替MapReduce,这里介绍Spark的工作原理。
Processing Engine:
- Spark Core:包含Spark的基本功能;尤其是定义RDD的API、操作以及这两者上的动作。其他Spark的库都是构建在RDD和Spark Core之上的
Access and Interface:
- Spark Streaming:对实时数据流进行处理和控制。Spark Streaming允许程序能够像普通RDD一样处理实时数据
- Spark SQL:提供通过Apache Hive的SQL变体Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表被当做一个RDD,Spark SQL查询被转换为Spark操作。
- GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作
- MLlib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。
并行化是将工作负载分在不同线程或不同节点上执行的子任务
Spark的工作负载的划分由RDD分区决定。
Spark工作流程图
1、将程序提交至Master(Master组成:RDD graph,Scheduler,Block Tracker以及Shuffle Tracker)
2、启动RDD Graph就是DAG,它会提交给Task Scheduler任务调度器等待调度执行
3、具体执行时,Task Scheduler会把任务提交到Worker节点上
4、Block Tracker用于记录计算数据在Worker节点上的块信息
5、Shuffle Blocker用于记录RDD在计算过程中遇到的Shuffle过程时会进行物化,Shuffle Tracker用于记录这些物化的RDD存放信息
RDD Graph
一个RDD由4个分区组成,每个圆柱框都是一个Partition。
每个Partition分配一个任务来执行。绿色的矩形表示实施RDD操作后的数据集