Spark是一个用于大规模数据处理的统一计算引擎
注意:Spark不仅仅可以做类似于MapReduce的离线数据计算,还可以做实时数据计算,并且它还可以实现类似于Hive的SQL计算,等等,所以说它是一个统一的计算引擎
Spark的特点
接下来看一下Spark的一些特点
- Speed:速度快
- Easy of Use:易用性
- Generality:通用性
- Runs Everywhere:到处运行
1.由于Spark是基于内存进行计算的,所以它的计算性能理论上可以比MapReduce快100倍
2.Spark可以使用多种编程语言快速编写应用程序,例如Java、Scala、Python、R和SQL
3.Spark提供了80多个高阶函数,可以轻松构建Spark任务
4.Spark提供了Core、SQL、Streaming、MLlib、GraphX等技术组件,可以一站式地完成大数据领域的离线批处理、SQL交互式查询、流式实时计算,机器学习、图计算等常见的任务
从这可以看出来Spark也是一个具备完整生态圈的技术框架
5.在Hadoop YARN、Mesos或Kubernetes上使用Spark集群。
并且可以访问HDFS、Alluxio、Apache Cassandra、Apache HBase、Apache Hive和数百个其它数据源中的数据.
Spark vs Hadoop
那接下来我们拿Spark和Hadoop做一个对比
在这里我们通过三个层面进行对比分析
- 综合能力
Spark是一个综合性质的计算引擎
Hadoop既包含MapReduce(计算引擎),还包含HDFS(分布式存储)和Yarn(资源管理)
所以说他们两个的定位是不一样的。
从综合能力上来说,hadoop是完胜spark的
- 计算模型
Spark 任务可以包含多个计算操作,轻松实现复杂迭代计算
而Hadoop中的MapReduce任务只包含Map和Reduce阶段,不够灵活
从计算模型上来说,spark是完胜hadoop的
- 处理速度
Spark 任务的数据是基于内存的,计算速度很快
而Hadoop中MapReduce 任务是基于磁盘的,速度较慢
从处理速度上来说,spark也是完胜hadoop的
之前有一种说法,说Spark将会替代Hadoop,这个说法是错误的,其实它们两个的定位是不一样的,Spark是一个通用的计算引擎,而Hadoop是一个包含HDFS、MapRedcue和YARN的框架,所以说Spark就算替代也只是替代Hadoop中的MapReduce,也不会整个替代Hadoop,因为Spark还需要依赖于Hadoop中的HDFS和YARN。
所以在实际工作中Hadoop会作为一个提供分布式存储和分布式资源管理的角色存在
Spark会在它之上去执行。
所以在工作中就会把spark和hadoop结合到一块来使用
Spark+Hadoop
那下面我们来看一下Spark和Hadoop是如何结合
看这个图
- 底层是Hadoop的HDFS和YARN
- Spark core指的是Spark的离线批处理
- Spark Streaming指的是Spark的实时流计算
- SparkSQL指的是Spark中的SQL计算
- Spark Mlib指的是Spark中的机器学习库,这里面集成了很多机器学习算法
- 最后这个Spark GraphX是指图计算
Spark主要应用在以下这些应用场景中
- 低延时的海量数据计算需求,这个说的就是针对Spark core的应用
- 低延时SQL交互查询需求,这个说的就是针对Spark SQL的应用
- 准实时(秒级)海量数据计算需求,这个说的就是Spark Streaming的应用