数据学习从0到1 初识Spark

337 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天 juejin.cn/post/716729… Spark是一个用于大规模数据处理的统一计算引擎

注意:Spark不仅仅可以做类似于MapReduce的离线数据计算,还可以做实时数据计算,并且它还可以实现类似于Hive的SQL计算,等等,所以说它是一个统一的计算引擎

Spark的特点

接下来看一下Spark的一些特点

  1. Speed:速度快
  2. Easy of Use:易用性
  3. Generality:通用性
  4. 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做一个对比

在这里我们通过三个层面进行对比分析

  1. 综合能力

Spark是一个综合性质的计算引擎

Hadoop既包含MapReduce(计算引擎),还包含HDFS(分布式存储)和Yarn(资源管理)

所以说他们两个的定位是不一样的。

从综合能力上来说,hadoop是完胜spark的

  1. 计算模型

Spark 任务可以包含多个计算操作,轻松实现复杂迭代计算

而Hadoop中的MapReduce任务只包含Map和Reduce阶段,不够灵活

从计算模型上来说,spark是完胜hadoop的

  1. 处理速度

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是如何结合

看这个图

  1. 底层是Hadoop的HDFS和YARN

  2. Spark core指的是Spark的离线批处理

  3. Spark Streaming指的是Spark的实时流计算

  4. SparkSQL指的是Spark中的SQL计算

  5. Spark Mlib指的是Spark中的机器学习库,这里面集成了很多机器学习算法

  6. 最后这个Spark GraphX是指图计算

Spark主要应用在以下这些应用场景中

  1. 低延时的海量数据计算需求,这个说的就是针对Spark core的应用
  2. 低延时SQL交互查询需求,这个说的就是针对Spark SQL的应用
  3. 准实时(秒级)海量数据计算需求,这个说的就是Spark Streaming的应用