Spark是一种基于内存的快速的、通用、可拓展的大数据分析计算引擎。
一、Spark与MapReduce
Hadoop框架中的MapReduce计算引擎,也是一种大数据分析计算引擎。那既然已经又来MR那我们为何还要开发Spark计算模型呢?或者说这两者有何相同之处?在应用方面有何不同?
1、Spark与Hadoop
Hadoop是一个开源的生态圈,有文件储存的HDFS,有计算引擎MR,有资源调度的YARN,以及数据库的Hbase等等。
Spark就仅仅是一个计算引擎,仅仅相对的是MR。并不能和hadoop来做比较。
2、Spark与MR
首先来说,MR程序是由Java开发,在使用时使用Java编写程序。Spark是由Scala语言开发,使用Scala编写程序。(Scala也是一种基于JVM的函数式编程语言)
Spark是一个数据快速的分析项目,他的核心技术是弹性分布式数据集(RDD)。提供了比MR丰富的模型,可以快速在内存中对数据集进行多次迭代。不像MR,如果要进行复杂的计算,需要多个MR程序相串联。
Spark是一个基于内存的计算引擎,而MR是一个基于磁盘的操作。这也是他们最大的区别,MR多个作业都要依赖于磁盘交互,但是Spark就不用,只需要在写入的时候进行一次。所以Spark在大部分情况下比MR要快。
二、Spark结构
Spark是一个标准分布式计算引擎,采用master-slave结构。
1、核心组件
Driver:是Spark的驱动器节点,负责实际代码的执行工作。将用户程序转化成作业(