【Spark】适用场景&优缺点

Spark的适用场景

  1. 需要快速处理大数据。Hadoop常用于解决高吞吐,批量处理,离线计算结果的业务场景,如果需要实时,即对数据处理速度有一定要求的,Hadoop显然不符合;Spark通过内存计算能力可以极大的提高大数据处理速度
  2. 适用于需要多次操作特定数据集的应用场合
  3. 数据量不大,但要求实时统计分析需求
  4. 基于大数据的SQL查询、流式计算,图计算,机器学习的场景
  5. 支持Java,Scala,Python,R语言的场景

Spark的特点

  1. 快速处理能力,基于内存
  2. 易于使用,支持多种语言
  3. 支持SQL查询,支持SQL和HQL
  4. 支持流式计算,Spark Streaming
  5. 可用性高,既支持Standalone独立部署(Master and Slaver模式),也支持基于Yarn的混合模式
  6. 丰富的数据源支持,Spark可以访问操作系统自身和HDFS,也可以访问Hive,HBase等

Spark的优缺点

优点即为上述特点,缺点:

  1. 不稳定,集群偶尔会挂掉。因为是基于内存运算的,因为确实与磁盘的I/O,如果数据量超出内存会出现挂掉的现象
  2. 数据的partition,会导致集群中的各台机器上计算任务分配不均匀
  3. 自身任务调度功能不够好

Spark与Hadoop的选择

根本差异就是Spark基于内存,Hadoop基于磁盘

  1. 迭代计算,多并行,多数据复用的场景(机器学习,数据挖掘)应选择Spark,MapReduce由于磁盘I/O不适合循环迭代式数据流处理
  2. 机器学习中 ALS、凸优化梯度下降等。这些都需要基于数据集或者数据集的衍生数据反复查询反复操作的场景,应使用Spark

区别:

  1. Spark 和Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数据通信是基于内存,而 Hadoop 是基于磁盘。
  2. Spark Task 的启动时间快。Spark 采用 fork 线程的方式,而 Hadoop 采用创建新的进程的方式。
  3. Spark 只有在 shuffle 的时候将数据写入磁盘,而 Hadoop 中多个 MR 作业之间的数据交互都要依赖于磁盘交互
  4. Spark 的缓存机制比HDFS 的缓存机制高效。

参考

《深入理解Spark:核心思想与源码分析》
Spark的特点及缺点

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