赞
踩
说起Spark的产生背景,就得说一下MapReduce的局限性。
现有的各种计算框架各自为战,例如,批处理计算框架有MapReduce、Hive和Pig,流式计算框架有Storm,交互式计算框架有Impala和Presto,那么能否有一种灵活的框架可同时进行批处理、 流式计算、 交互式计算?
这时,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处理过程中会发生多次I/O,例如写中间结果到磁盘等,Spark数据处理速度秒杀MapReduce!当然,内存断电后会丢失数据,Spark就不能用于处理需要长期保存的数据了。不过,虽然Spark号称”内存计算框架”,但它也可更改设置将数据写到磁盘上的。
最后,补充说明一下Spark和Hadoop的关系。下图展示了Hadoop生态圈。
Hadoop实质上更多是一个分布式数据基础设施,但除了HDFS分布式数据存储功能之外,还提供了MapReduce数据处理功能。
Spark是专门用来对分布式存储的大数据进行处理的工具,它不会对分布式数据进行存储,但必须和其他分布式文件系统进行集成才能运作。
Spark不是非要依附在Hadoop身上才能生存,也可以选择其他基于云的数据系统平台。但我们认为Spark和Hadoop结合为最佳。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。