您的位置:首页 > 大数据

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

2019-02-18 23:02 423 查看

随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处理框架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语言还没有可比性。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐