Spark概述
Spark是一种快速、通用、可扩展的大数据分析引擎,Spark生态系统是一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架,提高了在大数据环境下数据处理的实时性 , 同时保证了高容错性合高可伸缩性,允许用将Spark布置在大量廉价硬件之上,形成集群。
Spark发展史
2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。
Spark的特点
1.快: 与hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上。Spark实现高效的DAG执行引擎,可以通过基于内存来高效处理数据流。
2.易用:Spark支持Java,Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。
3.通用:Spark提供了统一的解决方案。可以用于批处理,交互式查询,实时流处理,机器学习和图计算。
4.兼容性:Spark可以非常方便地与其他的开源产品进行融合。Spark可以运行在Hadoop,Mesos,Kubernets,standalone或者云上。
RDD概述
RDD是一个弹性的分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可并行计算的集合。
RDD特性
1.A list of partitions一个分区列表,RDD中的数据都存在一个分区列表里面。
2.A function for computing each split作用在每一个分区中的函数。
3.A list of dependencies on other RDDs一个RDD依赖于其他多个RDD,这个点很重要,RDD的容错机制就是依据这个特性而来的。
4. Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)可选的,针对于kv类型的RDD才具有这个特性,作用是决定了数据的来源以及数据处理后的去向。
5.Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)可选项,数据本地性,数据位置最优。