一、简介
spark的官网:http://spark.apache.org/
spark解决了什么问题?
我们都知道hadoop,hadoop以一个非常容易使用的编程模型解决了大数据的两大难题:
1)分布式存储hdfs;
2)分布式计算mapReduce;
但是hadoop也存在着一些问题,最主要的缺陷在于它的延迟比较严重,因为hadoop的mapReduce总是需要进行大量的I/O,即使是中间输出结果也需要通过I/O来保存到HDFS中并再次读取。如果是在大规模迭代的情况下hadoop的效率就更不忍直视了。
而spark的诞生弥补了mapreduce的问题,并迅速成为了Apache的顶级项目。
由于spark是基于内存计算的,极大地减少了计算过程的I/O操作,在大规模的迭代计算中它的计算速度是hadoop的100多倍,如图:
spark的计算速度非常快,同时它支持scala、Python、Java以及R四种语言来编写spark应用,更加的易于使用。
spark核心组件
如图所示,spark主要包含了五块内容,在spark core的基础之上构建了4大组件
1、spark SQL:可以使用SQL来操作数据
文档地址:http://spark.apache.org/docs/latest/sql-programming-guide.html
2、spark stream:做流式计算的组件
文档地址:http://spark.apache.org/docs/latest/streaming-programming-guide.html
3、MLlib:spark用于数据挖掘的算法库
文档地址:http://spark.apache.org/docs/latest/ml-guide.html
4、graphx:用于图计算的算法库
文档地址:http://spark.apache.org/docs/latest/graphx-programming-guide.html
总结
spark并不是hadoop的替代品,相反它是hadoop的一个补充,弥补了mapReduce的缺陷。同时,spark并也会利用HDFS进行持久化操作,所以spark和hadoop本身是相辅相成的。而spark除了速度快之外,还提供了强大的组件用于SQL、流式计算、机器学习、图计算等。它也支持很多的数据源,并支持如scala、Python、Java、R等编程语言非常地易于使用。