Spark是什么?
引用官网(官方网址:http://spark.apache.org/)的一段话:
Apache Spark™ is a fast and general engine for large-scale data
processing.Apache Spark is an open source cluster computing system that aims to
make data analytics fastboth fast to run and fast to wrtie
大概翻译下就是:Apache下的Spark是一种快速、通用的大规模数据处理引擎。Apache Spark一个开源的集群计算系统,其目标进行快速地数据分析,不但运行得快,写得也快。
下面看这张图:
The Berkeley Data Analytics Stack:
这是伯克利大学的AMP实验室对数据进行分析所使用到的技术栈,从中可以看到Spark集群包括:
1、SparkCore
2、SparkStreaming
3、SparkSQL
4、SparkMLib
其中,SparkCore是用于大数据的批处理(类似于MapReduce), SparkStreaming是用于大数据的流处理,SparkSQL是用于交互式处理,类似Hive工具,SparkMLib则是用于机器学习
Spark的宗旨是One stack rule them all !(所有大数据的处理场景都可以在Spark中一栈式处理)
我们知道大数据处理的计算框架有很多,针对不同的场景搭建不同的集群会带来一些问题:比如资源抢占,搭建成本高等,维护成本也高。而spark的目的就是解决这个问题,搭建一个spark集群即可以解决所有的大数据处理场景。
Spark演变历史:
Spark是美国加州大学伯克利分校的AMP实验室(主要创始人lester和Matei)开发的通用的大数据处理框架
2009伯克利大学开始编写最初的源代码
2010年才开放的源码
2012年2月发布了0.6.0版本
2013年6月进入了Apache孵化器项目
2013年年中Spark的主要成员成立的DataBricks公司
2014年2月成为了Apache的顶级项目(8个月的时间)
2015年5月底Spark1.0.0发布
2014年9月Spark1.1.0发布
2014年12月spark1.2.0发布
2015年3月Spark1.3.0发布
2015年6月Spark1.4.0发布
2015年9月Spark1.5.0发布
2016年1月Spark1.6.0发布
2016年5月Spark2.0.0预览版发布
2016年7月Spark2.0.0正式版发布
2016年12月Spark2.1.0正式版发布
Spark与MapReduce不同之处是Spark计算是基于内存迭代的,而MapReduce是基于磁盘迭代的,下图第一行MapReduce计算示意图,第二行是Spark计算示意图:
Spark比MapReduce快不仅仅是因为其基于内存迭代,还有一部分原因是Spark的DAG机制。
Spark的运行模式有四种:
Local 多用于测试
Standalone
YARN 最具前景
Mesos