大数据改变了世界,spark改变了大数据!

大数据改变了世界,spark改变了大数据!

Spark是一个快速的、通用的处理大数据的引擎。

Spark以内存运行时,速度比hadoop的mapreduce要快100多倍,以磁盘运行,也要快10多倍;

Spark支持java、scala、python、R和sql开发,有超过80个高层次的操作来使得并行开发更加容易。建议只使用java或scala,spark2.0以后对python的支持不是很好,优化性能的一些api并不支持python。

Spark整合了sql、streaming和复杂分析(机器学习和图计算),安装了一个spark,相当于批处理、实时流、在线分析、离线分析、机器学习、图计算一次性全部搞定了。

Spark可以运行在任何地方。

在Spark出现之前,大数据生态圈的开发过程是这样的:

比如,有这么一个大数据服务支撑平台,选择使用hadoop平台,最底层是HDFS平台,在HDFS之上有一个YARN资源调度框架;

在此之外,还需要一些框架来支持我们做一些批处理分析,于是Hadoop里自带了一个计算框架:MapReduce;

但是,我们在使用MapReduce框架去分析处理一些业务需求的时候,就需要程序员去写JAVA代码,对于部分程序员来说,编写JAVA代码来做MapReduce开发是没有问题的,但对于很多数据分析人员、领导也要去分析一些数据的时候,让他们去写JAVA代码,就不是一朝一夕能够掌握的,所以紧接着就出现了一个新的工具:Hive

Hive:通过Hive写sql语句(或者用Pig),把sql转换为Mapreduce代码去Hadoop平台上执行,试想一下,这个世界上的程序员当中,是会写sql语句的人多呢?还是会写java代码的人多呢?很明显,会写sql语句的人更多。有了Hive这个工具 ,一下子把大数据平台的开发难度就降低了。

Hive通过解析引擎把sql转换为Mapreduce代码,Mapreduce代码再提交到Yarn上运行,在Yarn的调度下去分析HDFS上的数据。

无论是Hive还是Mapreduce,底层跑的都是Mapreduce的代码,与之类似的还有一个工具叫pig,Pig和Hive只是语法不一样,它们都有自己的一套语言,都会转换成为mapreduce去执行。

1、通过Hive写sql语句(或者用Pig),把sql转换为Mapreduce代码去Yarn运行,Yarn来分析hadoop平台上的数据

2、Mapreduce直接操作hadoop,则需要程序员写java代码,不会写java,也可以通过hive来写sql进行操作map reduce

3、Mapreduce:基于磁盘的多次迭代的计算框架:

Map把结果写到磁盘

通过网络复制到reduce端的磁盘

再复制结果到磁盘

可能会有几十上百个的MapReduce,多次的磁盘和网络的复制操作,导致mapreduce很慢,不适合实时监控系统;

以上适用于一些批处理作业、高延迟的作业,这是我们在生产环境中常见的一类应用。后来有了一些需要实时处理的项目,如:淘宝双11,大厅里有一幅图,实时监控几点到几点的交易额有多少,到了100亿的时候是几点。这一类的应用就是实时流的项目。

4、解决方案:

传统意义上唯一的流处理引擎组件就是Storm,它可以做到毫秒级的实时处理;

5、使用Hbase做数据库

也就是说,在spark出现以前要架构一套大数据平台,可能包括的平台有hadoop的hdfs、yarn、mapreduce、Hive、pig、storm,处理出来的结果可能会放在另外一个数据库里:Hbase;

在Spark出现之后,大数据生态圈的开发过程是这样的:

Spark最底层有一个叫做spark core的组件,类似mapreduce的开发,我们称作spark core的开发,Spark Core里面底层的代码吸收了mapreduce框架的所有优点,但它又比mapreduce更优秀、更快:

mapreduce多次把中间结果迭代到磁盘上面,spark也有类似于mapreduce这样的操作,但是它把它的中间结果写入内存进行迭代,肯定比在磁盘里迭代更快;spark有向无环图的(DAG)执行流程,可以自动优化整个迭代过程。

更灵活:

mapreduce里只有两个操作,要么map、要么reduce,spark Core里有超过80个类似map reduce这样的操作。

Spark是如何架构的呢?

1、 最底层就是spark core,类似于以前大数据平台里的mapreduce,与前面所说的map reduce需要程序员写java代码一样,Spark Core也需要写scala或java代码来操作;

2、 不会写scala/Java代码也可以操作spark core,那就是spark sql,spark sql非常强大,它几乎拥有hive有的所有功能,hive没有的它也有;可以简单认为spark sql对应于Hive或pig,同样也可以写sql语句,转换成spark core的代码;

3、 由于spark core比mapreduce快,所以spark sql更快,spark sql远远不止是写sql语句这么简单,包括了DataFrame、DataSet等比较优秀的东西;

4、 spark streaming对应storm,是spark的实时处理项目,但实际上,到目前为止,无论是Apache的Flink(阿里封装成了Blink),还是Google贡献给Apache的Beam,都在将微批处理和流处理集成到一起,批流一体几乎成了一种趋势,因此spark也不甘示弱,在微批处理引擎spark streaming的基础上,又增加了structured streaming,把实时处理延迟级别从秒级提高到了毫秒级。

spark sql和spark streaming、structured streaming的底层都是跑spark core的东西,spark之所以牛,牛在什么地方呢?spark sql和spark streaming是可以互相转换的。无论是有限集的批处理还是无限集的流处理、图计算还是机器学习,数据模型都是可以互相无缝转换,底层都是基于spark core的rdd(弹性分布式数据集)。

Spark的4大特点:

快速:

Spark Core里面底层的代码吸收了mapreduce框架的所有优点,更快:mapreduce使用写入磁盘进行迭代,而spark core则是写入内存进行迭代

通用性:

以前大数据处理平台,需要安装:HDFS、YARN、Hive、Storm等

现在只要安装一个spark就可以了,以前所需要的这些功能,只是里面的一个jar包而已。

也就是说,安装了一个spark,批处理、实时流、在线分析、离线分析、机器学习、图计算,一次性全部搞定。

Spark处理的数据在绝大多数应用场景中,还是来自hdfs,所以spark和hadoop还是分不开。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容