SparkCore
架构设计图
名词解释
1.RDD(Resilient Distributed DataSet)
弹性分布式数据集,是对数据集在spark储存和计算过程中的一种抽象
是一组只读可分区的分布式数据集合
一个RDD包含多个分区Partition(类似mapreduce中的inputSplit,文件大小超过128mb时,默认切分),分区是按照一定规则,将具有相同规则的属性数据放在一起
横向上可切分并行计算,以分区partition为切分后的最小储存和计算单元
纵向上可以进行内存/外存切换使用,当数据在内存不足时,使用外存补充
2.partition(分区)
partition类似hadoop的split,计算是以partition为单位进行的,提供了一种划分数据的方式
partition的划分依据有很多,常见的有hash分区,范围分区等,也可以自己定义的,像hdfs文件,划分的方式就和MR一样,以文件的block来划分不同的partition
一个partition交给一个task去计算处理
3.算子
简称:Operator ,Op
广义上讲,对任何函数进行某一项操作都可以认为是一个算子
通俗上讲,算子即为映射,关系,变换
MR算子,主要分为两个,一个是Map,一个是Reduce两个主要操作的算子,导致灵活可用性比较差
spark算子分为两大类(scala算子),行动算子-转换算子:Action op和 Transformation op 合计有80多个
并且支持链式调用,所以强大
4.Transformation Operator
操作是延迟计算的,也就是说从一个RDD转换生成另一个RDD的转换运算不是马上执行,而是需要等到有action操作的时候才会真正触发操作-联想记忆法:类比spring 框架的 lazy init 懒加载单例初始化对象配置,单例模式中的懒汉模式
细分:
value数据类型的transformation算子
key-value数据类型的transformation算子
5.Action类算子
会触发spark提交作业,并将数据输出到spark系统
6.窄依赖
如果一个父RDD的每个分区只被一个RDD分区使用,一对一关系
7.宽依赖
如果一个父RDD的每个分区都要被子RDD的多个分区使用,一对多关系
8.Application
spark Application的概念和mr中的job或者yarn中的application manager下的application类似,指的是用户编写spark应用程序,包含了一个driver工鞥呢的代码块,和分布在集群中多个节点上运行的executor代码
一般是指整个spark项目从开发,测试.部署,运行的全部抽象
9.Driver
运行main函数并创建sparkContext:连接器(中枢神经)
被称为驱动程序:driver program类似于hadoop的wordcount程序中的driver类的main函数
10.Cluster Manager
集群的资源管理器,在集群上获取资源的服务,如yarn mesos,spark Standalone等
以yarn为例,驱动程序会向yarn申请计算我这个任务需要多少内存,多少cpu,然后由cluster manager调度告诉驱动程序可以使用多少,然后驱动程序将任务分配到既定的worker node节点上执行
11.WorkerNode
集群中任何一个可以运行spark应用代码的节点
worker node就是物理机器节点.可以在上面启动executor进程
12.Executor
Applicationyunxing