Spark和Hadoop的联系和区别

首先我们来看看Hadoop的相关简短回顾:

  1. Hadoop是由Java语言编写,在分布式集群上存储海量数据并运行分布式分析应用框架

  2. HDFS为其存储数据的分布式文件系统

  3.  分布式计算框架为MapReduce

  4. HBase一个基于HDFS的分布式非关系型数据库

  5. Yarn作为分布式资源调度框架

再来看看Spark:

  1. 开发语言 为 Scala

  2. 基础于核心  ==  Spark Core

  3. Spark SQL 用来操作结构化数据的组件。可以通过使用 SQL 语言来查询数据

  4. Spark Streaming 针对实时数据进行流式计算的组件

  5. 还有 Spark MLlib 和 Spark Graphx 分别是机器学习算法库 、面向图计算提供的框架与算法库

选择 Spark  还是选 Hadoop(MR)???

  · Spark在MR的基础上,进行了计算过程的优化,利用其RDD计算模型(适合并行计算和重复使用)

  · Hadoop基于磁盘进行数据通信,而Spark多个作业之间的通信是基于内存

  · Spark Task 启动时间快,采用的是fork线程的方式;而Hadoop采用创建新的进程的方式

  · Spark只有在shuffle 的时候将数据写到磁盘(进行磁盘IO),而Hadoop多个MR之间的胡数据交互都要依赖于磁盘交互

  · Spark 的缓存机制 比 HDFS的缓存机制 更为高效(Spark中的 cache & checkpoint)

由于Spark基于内存, 所以在实际环境中, 会受内存限制

Spark 相比于 MR更有优势 但是不能完全替代 MR

原文地址:https://www.cnblogs.com/joey-413/p/14085970.html