产品经理学大数据——大数据软件框架:Spark(1)

随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处理框架MapReduce适合离线计算,却无法满足实时性要求较高的业务,如实时推荐、用户行为分析等。因此,Hadoop生态系统又发展出以Spark为代表的新计算框架。相比MapReduce,Spark速度快,开发简单,并且能够同时兼顾批处理和实时数据分析。

  • Apache Spark来源

Apache Spark是加州大学伯克利分校的AMPLabs开发的开源分布式轻量级通用计算框架,并于2014年2月成为Apache的顶级项目。由于Spark基于内存设计,使得它拥有比Hadoop更高的性能,并且对多语言(Scala,Java、Python)提供支持。

  • Apache Spark与MapReduce的区别1——性能

Spark有点类似Hadoop MapReduce框架。Spark拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是,Job中间输出结果可以保存在内存中,从而不再需要读写HDFS(MapReduce的中间结果要放在文件系统上),因此,在性能上,Spark能比MapReduce框架块100倍左右(如图2-5所示),排序100TB的数据只需要20分钟左右。正是因为Spark主要是在内存中执行,所以Spark对内存的要求非常搞,一个节点通常需要配置24GB的内存。在业界,我们有时把MapReduce称为批处理计算框架,把Spark称为实时计算框架、内存计算框架或流式计算框架。

  • Apache Spark与MapReduce的区别2——容错性

Hadoop使用数据复制来实现容错性(I/O高),而Spark使用RDD(Resilient Distributed Datasets,弹性分布式数据集)数据存储模型来实现数据的容错性。RDD是只读的、分区记录的集合。如果一个RDD的一个分区丢失,RDD含有如何重建这个分区的相关信息。这就避免了使用数据复制来保证容错性的要求,从而减少了对磁盘的访问。通过RDD,后续步骤如果需要相同数据集时就不必重新计算或从磁盘加载,这个特性使得Spark非常适合流水线式的处理。

  • Spark和Hadoop生态的结合

虽然Spark可以独立于Hadoop来运行,但是Spark还是需要一个集群管理器和一个分布式存储系统。对于集群管理,Spark支持Hadoop YARN、Apache Mesos和Spark原生集群。对于分布式存储,Spark可以使用HDFS、Casandra、OpebStack Swift和Amazon S3。Spark支持Java、Python和Scala(Scala是Spark最推荐的编程语言,Spark和Scala能够紧密集成,Scala程序可以在Spark控制台上执行)。应该说,Spark紧密集成Hadoop生态系统中的上述工具。Spark可以与Hadoop上的常用数据格式(如:Avro和Parquet)进行交互,能读写HBase等NoSQL数据库,它的流处理组件Spark Streaming能连续从Flume和Kafka之类的系统上读取数据,它的SQL库Spark SQL能和Hive Metastore交互。

  • Spark优点

Spark的内存缓存使它适合于迭代计算。机器学习算法需要多次遍历训练集,可以将训练集缓存在内存里。在对数据集进行探索时,数据科学家可以在运行查询的时候讲数据集放在内存,这样就节省了访问磁盘的开销。

  • Spark的不足

虽然Spark目前被广泛认为是下一代Hadoop,但是Spark本身的复杂性也困扰着开发人员。Spark的批处理能力仍然比不过MapReduce,Spark SQL和Hice的SQL能力相比还有一定的差距,Spark的统计功能与R语言还没有可比性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值