Spark初识

1.Spark的背景、定义、特点
背景
oMapReduce框架局限性
仅支持Map和Reduce两种操作,提供给用户的只有这两种操作
编程复杂度略高,学习和使用成本略高。
处理效率低效
Map中间结果写磁盘,Reduce写HDFS,多个MR之间通过HDFS交换数据
任务调度和启动开销大
在机器学习、图计算等方面支持有限,性能效率表现比较差。
mapreduce的机器学习框架,称为mahout。
定义
o专为大规模数据处理而设计的快速通用的计算引擎,并形成一个高速发展应用广泛的生态系统。
特点
o速度快
内存计算下,Spark 比 Hadoop 快100倍
o易用性
80多个高级运算符
跨语言:使用Java,Scala,Python,R和SQL快速编写应用程序。
o通用性
Spark 提供了大量的库,包括SQL、DataFrames、MLib、GraphX、Spark Streaming。
开发者可以在同一个应用程序中无缝组合使用这些库。
支持多种资源管理器
oSpark 支持 Hadoop YARN,Apache Mesos,及其自带的独立集群管理器
生态组件丰富与成熟
ospark streaming:实时数据处理
oshark/sparkSQL:用sql语句操作spark引擎
osparkR:用R语言操作Spark
omlib:机器学习算法库
ographx:图计算组件
2.在hadoop生态圈中位置
在hadoop生态圈位置
Spark初识
spark生态圈
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一样处理实时数据
MLib:一个常用机器学习算法库,算法被实现为对RDD的Spark操作。这个库包含可扩展的学习算法,比如分类、回归等需要对大量数据集进行迭代的操作。
GraphX:控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作
SparkR是一个提供从R中使用Spark的轻量级前端的R包。在Spark1.6以后,SparkR提供了分布式数据框架,它支持selection,filtering,aggregation等操作。也支持使用MLib分布式机器学习。
3.版本发展与就业前景
版本发展
o重要里程碑
Spark初识
稳定版本一览( 2016年至今)
Spark 2.3.1 (Jun 08 2018)
Spark 2.3.0 (Feb 28 2018)
Spark 2.2.2 (Jul 02 2018)
Spark初识
我们选择经典的1.6.2版本,成熟稳定,市占率高。
spark1.x与2.x的优缺点对比
o优点
API抽象更高级、更统一,包括在spark-core,sparksql,sparksession等方面,学习更简单,开发效率更高,执行效率综合提升明显。
统一DataFrames和DataSets为DataSets,API进行了全部统一,简化学习和编程复杂度。
基本定位是低层API编程延用RDD,高级API编程均为DataSets,而大多数情况下用DataSets均可以解决问题。
spark-streaming基于spark sql进行了API更高级抽象,即structured streaming(结构化流式编程),易用性和性能提高。
对诸多组件中的旧的rdd计算逻辑用DataFrame或DataSet进行了重写优化,并扩充了更多的算法。
o缺点
对以前版本不是完全兼容,只是绝大部分兼容。
相对于1.6.x来讲,稳定性略差, bug不断。