一,什么是spark
定义:Spark一种基于内存的快速,通用,可扩展的大数据分析引擎.
历史:2009年诞生于加州伯克利分校AMPLab,项目采用scala编写
2010年开源
2013年6月成为Apache孵化项目
2014年2月成为Apache顶级项目
注:离线计算:会反复的读写磁盘,效率低,很难实现迭代计算,很难做到交互式的数据挖掘.(MapReduce)
实时流式计算:不反复读写磁盘,效率高,实现迭代计算,做到交互式的数据挖掘.(Spark,当内存不足时,也会有写磁盘操作)
二,Spark的组成
Spark Core:实现了Spark的基本功能,包含任务调度,内存管理,错误恢复,与存储系统交互等模块.还包含了对弹性分布式数据集(RDD)的API定义.
Spark SQL:是Spark用来操作结构化数据的程序包.通过Spark SQL,我们可以使用SQL或者Apache Hive版本的SQL方言(HQL)来查询数据.
Spark Streaming:是Spark提供的对实时数据进行流式计算的组件.提供了用来操作数据的API,并且与Spark Core种的RDD API高度对应.
Spark MLlib:提供常见的机器学习(ML)功能的程序库.包括分类,回归,聚类,协同,过滤等,还提供了模型评估,数据导入等额外的支持功能.
集群管理器:Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度 器,叫作独立调度器
三,Spark的应用
Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。
四,spark特点
1.Speed:Apache Spark使用最先进的DAG调度程序,查询优化程序和物理执行引擎,实现批量和流式数据的高性能
2,易用性:Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在这些shell中使用Spark集群来验证解决问题的方法
3,通用性
4,兼容性
Mesos:Spark可以运行在Mesos里面(Mesos 类似于yarn的一个资源调度框架)
standalone:Spark自己可以给自己分配资源(master,worker)
YARN:Spark可以运行在yarn上面
Kubernetes:Spark接收 Kubernetes的资源调度