如果说 MapReduce 是批处理的马自达,那 Spark 一定是批处理的法拉利
原因之一就是它将数据优先放在内存,内存读取速度远高于 MapReduce 的磁盘 IO 速度,如果需要多次 Map 处理,就像马自达和法拉利比赛跑远距离,之间的差距成指数级扩大
SparkCore 是法拉利的核心引擎
RDD(弹性分布式数据集)、DataFrame、DataSet,Spark 任务处理的基本单元。所有 Operations(中文称为算子)都是作用在上这些数据集上。
SparkCore 定义了 RDD、DataFrame、DataSet。
除此之外,SparkCore 还提供了 Spark 很多核心功能,包括但不限于:
-
SparkContext: spark 任务入口,在提交 Spark 任务之前需要先初始化 SparkContext,用来配置 Application 名、运行方式等等
SparkContext 也可以被用来创建 RDD,DataFrame 等
-
存储体系: 定义待处理数据集优先存储于各个 NodeManager (运行节点)的内存,它是法拉利的发动机,飞起跑的可靠保证
transforms 算子很懒
处理 Spark 数据集(如 RDD)的 Operations 有两种:
-
Transforms 算子
-
Actions 算子
transforms 算子处理对象是 RDD,返回的也是 RDD,正如其名,transforms 只是对 RDD 做了转换:
如调用filterMap()过滤数据,Map()对基本单元数据进行转换。
actions 算子则是返回最后结果或者写入存储的操作(返回的不是RDD):
如take(), collect()返回并输出 RDD 中真实的数据,saveAsTextFile()把 RDD 内容保存成文本文件。
当程序运行到 Transforms 算子的时间,该 Transforms 操作并不会第一时间被触发并且执行,该操作只会被记录;
当执行到Actions 时,前面记录的 Transforms 算子才会真正执行。
惰性机制提高了内存的利用率。
Spark 高配
Spark SQL:提供类 SQL 语句解析,将 SQL 解析成 Spark 任务
Spark Streaming:提供微批处理服务,可以看成秒级别的流处理计算框架
GraphX:分布式图处理计算框架,不了解。。。
MLlib:spark 的机器学习框架
网友评论