Spark-概述,核心模块介绍,与Hadoop MR的差异

文章目录

    • 一、Spark 概述
    • 二、Spark 特点
        • 快速
        • 易用
        • 通用
        • 可融合性
    • 三、Spark 核心模块
        • Spark Core
        • Spark SQL
        • Spark Streaming
        • Spark MLlib
        • Spark GraphX
    • 四、Hadoop VS Spark 差异

一、Spark 概述

Spark-概述,核心模块介绍,与Hadoop MR的差异_第1张图片
在这里插入图片描述
  Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。并且 Spark 目前已经成为 Apache 最活跃的开源项目, 有超过 1000 个活跃的贡献者。

二、Spark 特点

快速

  与 Hadoop 的 MapReduce 相比,Spark 基于内存的运算是 MapReduce 的 100 倍。基于硬盘的运算也要快 10 倍以上.

Spark 实现了高效的 DAG 执行引擎,可以通过基于内存来高效处理数据流
Spark-概述,核心模块介绍,与Hadoop MR的差异_第2张图片

易用

  Spark 支持 Scala、Java、Python、R 和 SQL 脚本,并提供了超过 80 种高性能的算法,非常容易创建并行 Application

而且 Spark 支持交互式的 Python 和 Scala 的 shell,这意味着可以非常方便地在这些 shell 中使用 Spark 集群来验证解决问题的方法,而不是像以前一样 需要打包,上传集群,验证等,这对于原型开发非常重要.
Spark-概述,核心模块介绍,与Hadoop MR的差异_第3张图片

通用

Spark 结合了SQL,Streaming和复杂分析.

Spark 提供了大量的类库,包括 SQL 和 DataFrames,机器学习(MLlib),图计算(GraphicX),实时流处理(Spark Streaming) .

可以把这些类库无缝的柔和在一个 App 中,减少了开发和维护的人力成本以及部署平台的物力成本.
Spark-概述,核心模块介绍,与Hadoop MR的差异_第4张图片

可融合性

Spark 可以非常方便的与其他开源产品进行融合.

比如,Spark 可以使用 Hadoop 的 YARN 和 Apache Mesos 作为它的资源管理和调度器,并且可以处理所有 Hadoop 支持的数据,包括 HDFS,HBase等.
Spark-概述,核心模块介绍,与Hadoop MR的差异_第5张图片
Spark-概述,核心模块介绍,与Hadoop MR的差异_第6张图片

三、Spark 核心模块

Spark-概述,核心模块介绍,与Hadoop MR的差异_第7张图片

Spark Core

  提供了 Spark 最基础与最核心的功能,包含独立任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark 的其他组件都是在Core的基础上进行扩展的

Spark SQL

  是 Spark 用来操作结构化数据的组件。通过SparkSql,用户可以使用 SQL或者Apache Hive 版本的 SQL 方言(HQL)来查询数据。Spark SQL 支持多种数据源,比如 Hive 表、Parquet 以及 JSON 等。

Spark Streaming

  是 Spark 提供的对实时数据进行流式计算的组件。提供了用来操作数据流的 API,并且与 Spark Core 中的 RDD API 高度对应。

Spark MLlib

  提供常见的机器学习 (ML) 功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。

Spark GraphX

  GraphX 是 Spark 面向图计算提供的框架与算法库。

四、Hadoop VS Spark 差异

Hadoop的MR框架Spark框架都是数据处理框架,如何选择呢?

架构方面

  • Hadoop:是分布式管理、存储、计算的生态系统;包括HDFS(存储)、MapReduce(计算)、Yarn(资源调度)
  • Spark:是分布式计算平台,是一个用scala语言编写的计算框架,基于内存的快速、通用、可扩展的大数据分析引擎

数据处理方面

  • Hadoop:MapReduce计算模型较为单一(只有 mapper 和 reducer ),多任务之间,数据会进行落盘,不太依赖内存,适合大规模数据集的批量处理
  • Spark:计算模型更加丰富,采用RDD计算模型,DAG有向无环图,多任务之间,数据会在内存中处理,合适迭代式、流式计算

运行模式方面

  • Hadoop:Task采用创建新的进程的方式,启动时间较慢
  • Spark:Task采用fork线程的方式,启动时间较快

数据通信方面

  • Hadoop:多个MR作业之间数据通信,是基于磁盘
  • Spark:多个作业之间数据通信,是基于内存,只有在shuffle的时候会将数据写入磁盘

小结
  Spark 确实会比 MapReduce 更有优势。但是Spark是基于内存的,所以在实际的生产环境中,由于内存的限制,可能会由于内存资源不够导致Job执行失败,此时,MapReduce其实是一个更好的选择。

  实际上,Spark已经很好地融入了Hadoop生态圈,并成为其中的重要一员,它可以借助于YARN实现资源调度管理,借助于HDFS实现分布式存储。

你可能感兴趣的:(Spark,spark,大数据)