Spark概述

来源:互联网 发布:淘宝站内免费推广渠道 编辑:程序博客网 时间:2024/05/09 10:09

Spark产生背景一:MapReduce局限性

说起Spark的产生背景,就得说一下MapReduce的局限性。

  1. 仅支持Map和Reduce两种操作。
  2. MapReduce处理效率低,体现在:
    (1) Map阶段会将中间结果写入磁盘, Reduce阶段会将运算结果写入HDFS,多个MR任务之间通过HDFS交换数据。
    (2) 任务调度和启动开销大。
    (3) MapReduce无法充分利用内存。
    (4) Map阶段和Reduce阶段都需要对运算结果进行排序。
  3. MapReduce不适合批处理(如机器学习、 图计算等), 交互式处理(如数据挖掘)和流式处理(如日志分析)等。
  4. MapReduce编程不够灵活。

Spark产生背景二:框架多样化

现有的各种计算框架各自为战,例如,批处理计算框架有MapReduce、Hive和Pig,流式计算框架有Storm,交互式计算框架有Impala和Presto,那么能否有一种灵活的框架可同时进行批处理、 流式计算、 交互式计算?
大统一框架
这时,Spark应运而生了,它可以同时进行批处理、 流式计算、 交互式计算。

Spark特点

高效
1. Spark是内存计算引擎,它提供了Cache机制来支持需要反复迭代的计算或者多次数据的共享,以此减少数据读取的I/O开销。
2. Spark通过DAG引擎减少了多次计算产生的中间结果写到HDFS的开销。
3. Spark可以使用线程池来减少task的启动开销,并避免了shuffle过程。
4. Spark没有不必要的sort操作并减少了磁盘I/O操作。
易用
1. Spark提供了丰富的API, 支持Java、Scala、Python和R四种语言。
2. Spark的代码量比MapReduce少了2~5倍。
与Hadoop集成
1. 读写HDFS/Hbase
2. 与YARN集成

Spark与MapReduce的区别

Spark与MapReduce的区别
从上图可知,Spark在内存中以近乎于”实时”的时间完成所有的数据分析,而MapReduce处理过程中会发生多次I/O,例如写中间结果到磁盘等,Spark数据处理速度秒杀MapReduce!当然,内存断电后会丢失数据,Spark就不能用于处理需要长期保存的数据了。不过,虽然Spark号称”内存计算框架”,但它也可更改设置将数据写到磁盘上的。

Spark和Hadoop的关系

最后,补充说明一下Spark和Hadoop的关系。下图展示了Hadoop生态圈。
Hadoop生态圈

Hadoop实质上更多是一个分布式数据基础设施,但除了HDFS分布式数据存储功能之外,还提供了MapReduce数据处理功能。
Spark是专门用来对分布式存储的大数据进行处理的工具,它不会对分布式数据进行存储,但必须和其他分布式文件系统进行集成才能运作。

Spark不是非要依附在Hadoop身上才能生存,也可以选择其他基于云的数据系统平台。但我们认为Spark和Hadoop结合为最佳

Spark应用场景

  1. 商业智能:按天跑批,计算量非常大的同时对效率要求也比较高;Hive on Spark的引入极大地提高了效率。
  2. 基于会员画像的快速查询系统业务:Hive on Spark利用其快速查询以及内存计算等优势,承担了CRM即席查询工作。
  3. 算法平台:机器学习、 图计算等迭代计算,大大减少了网络传输、 数据落地等, 极大地提高了计算性能。
  4. 幽灵统计系统:实现了”数据实时采集、数据实时清洗、系统实时查询”的实时全流程统计。
0 0