Spark学习系列一
1、Spark 是什么?
Spark是一个快速的处理大规模数据的通用工具。它是一个基于内存计算框架
包含核心组件-Spark Core、交互式查询-Spark SQL、准实时流式计算-Spark Streaming、机器学习- Spark MLlib、图计 算-Spark GraphX
2、Spark产生的背景是什么?
1)MapReduce局限性
1、仅支持Map和Reduce两种操作
2、MapReduce处理效率低:
(1) Map阶段会将中间结果写入磁盘, Reduce阶段会将运算结果写入HDFS,多个MR任务之间通过HDFS交换数据
(2) 任务调度和启动开销大
(3) MapReduce无法充分利用内存
(4) Map阶段和Reduce阶段都需要对运算结果进行排序
3、MapReduce不适合批处理(如机器学习、 图计算等), 交互式处理(如数据挖掘)和流式处理(如日志分析)等
4、MapReduce编程不够灵活
2)处理数据的技术框架太杂太多
批处理:MapReduce、Hive、Pig
流式计算:Storm
交互式计算:presto,Impala
能不能有一个能集大成者,把数据计算处理的天下统一?不然各种技术框架混战,不利于业界快速发展,开发维护学习成 本高。这时候需要一种集大成者出现,那就是Spark。
3、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,包含控制图、创建子图、访问路径上所有顶点的操作