`
m635674608
  • 浏览: 5003318 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spark与Flink:对比与分析

 
阅读更多

Spark是一种快速、通用的计算集群系统,Spark提出的最主要抽象概念是弹性分布式数据集(RDD),它是一个元素集合,划分到集群的各个节点上,可以被并行操作。用户也可以让Spark保留一个RDD在内存中,使其能在并行操作中被有效的重复使用。Flink是可扩展的批处理和流式数据处理的数据处理平台,设计思想主要来源于Hadoop、MPP数据库、流式计算系统等,支持增量迭代计算。 

原理 

Spark 1.4特点如下所示: 

1.Spark为应用提供了REST API来获取各种信息,包括jobs、stages、tasks、storage info等。 
2.Spark Streaming增加了UI,可以方便用户查看各种状态,另外与Kafka的融合也更加深度,加强了对Kinesis的支持。 
3.Spark SQL(DataFrame)添加ORCFile类型支持,另外还支持所有的Hive metastore。 
4.Spark ML/MLlib的ML pipelines愈加成熟,提供了更多的算法和工具。 
5.Tungsten项目的持续优化,特别是内存管理、代码生成、垃圾回收等方面都有很多改进。 
6.SparkR发布,更友好的R语法支持。 


 

 

图1 Spark架构图

 


 

 

图2 Flink架构图

 


 

 

图3 Spark生态系统图


Flink 0.9特点如下所示: 
1.DataSet API 支持Java、Scala和Python。 
2.DataStream API支持Java and Scala。 
3.Table API支持类SQL。 
4.有机器学习和图处理(Gelly)的各种库。 
5.有自动优化迭代的功能,如有增量迭代。 
6.支持高效序列化和反序列化,非常便利。 
7.与Hadoop兼容性很好。 


 

 

图4 Flink生态系统图


分析对比 

性能对比 

首先它们都可以基于内存计算框架进行实时计算,所以都拥有非常好的计算性能。经过测试,Flink计算性能上略好。 

测试环境: 
1.CPU:7000个; 
2.内存:单机128GB; 
3.版本:Hadoop 2.3.0,Spark 1.4,Flink 0.9 
4.数据:800MB,8GB,8TB; 
5.算法:K-means:以空间中K个点为中心进行聚类,对最靠近它们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。 
6.迭代:K=10,3组数据 


 

 

图5 迭代次数(纵坐标是秒,横坐标是次数)


总结:Spark和Flink全部都运行在Hadoop YARN上,性能为Flink > Spark > Hadoop(MR),迭代次数越多越明显,性能上,Flink优于Spark和Hadoop最主要的原因是Flink支持增量迭代,具有对迭代自动优化的功能。 

流式计算比较 

它们都支持流式计算,Flink是一行一行处理,而Spark是基于数据片集合(RDD)进行小批量处理,所以Spark在流式处理方面,不可避免增加一些延时。Flink的流式计算跟Storm性能差不多,支持毫秒级计算,而Spark则只能支持秒级计算。 

与Hadoop兼容 

计算的资源调度都支持YARN的方式 

数据存取都支持HDFS、HBase等数据源。 

Flink对Hadoop有着更好的兼容,如可以支持原生HBase的TableMapper和TableReducer,唯一不足是现在只支持老版本的MapReduce方法,新版本的MapReduce方法无法得到支持,Spark则不支持TableMapper和TableReducer这些方法。 

SQL支持 

都支持,Spark对SQL的支持比Flink支持的范围要大一些,另外Spark支持对SQL的优化,而Flink支持主要是对API级的优化。 

计算迭代 

delta-iterations,这是Flink特有的,在迭代中可以显著减少计算,图6、图7、图8是Hadoop(MR)、Spark和Flink的迭代流程。 


 

 

图6 Hadoop(MR)迭代流程

 


 

 

图7 Spark迭代流程

 


 

 

图8 Flink迭代流程


Flink自动优化迭代程序具体流程如图9所示。 


 

 

图9 Flink自动优化迭代程序具体流程


社区支持 

Spark社区活跃度比Flink高很多。 

总结 

Spark和Flink都支持实时计算,且都可基于内存计算。Spark后面最重要的核心组件仍然是Spark SQL,而在未来几次发布中,除了性能上更加优化外(包括代码生成和快速Join操作),还要提供对SQL语句的扩展和更好地集成。至于Flink,其对于流式计算和迭代计算支持力度将会更加增强。无论是Spark、还是Flink的发展重点,将是数据科学和平台API化,除了传统的统计算法外,还包括学习算法,同时使其生态系统越来越完善。 

作者:卢亿雷 
http://www.iteye.com/news/30755

 

 

分享到:
评论

相关推荐

    Flink,Storm,Spark Streaming三种流框架的对比分析

    Flink、Storm、Spark Streaming三种流框架都有其优缺点,以下是对比分析: * Flink:Flink是一个原生的流处理系统,提供高级的API,支持批处理和流处理。Flink的架构基于Master-Slave风格,具有良好的可扩展性和高...

    Spark和Flink平台大数据批量处理的性能分析.pdf

    11. Hadoop/MapReduce:尽管是更早期的大数据技术,但文档中提及了它与Spark和Flink的关系,这可能指的是Spark和Flink对Hadoop/MapReduce编程模型的兼容性或替代性。 12. Stinger优化:Spark 1.3引入了Stinger计划...

    flink学习资料(包含网盘视频地址)

    10. **Flink与其他大数据技术的集成**:如Flink与Hadoop、Spark的对比,以及如何在Hadoop生态系统中使用Flink。 压缩包中的高清PDF学习资料可能详细阐述了以上知识点,而网盘中的视频教程则可能通过实例演示加深...

    基于Flink+Doris构建电商实时数据分析平台(PC、移动、小程序)

    1. AB版本分析:通过对比不同版本或功能的效果,优化产品设计和用户体验。 2. 下砖分析:实时监测用户活跃度和流失率,及时发现并解决可能导致用户流失的问题。 3. 营销分析:评估营销活动效果,如促销活动带来的...

    个人 2024春节flink总结

    #### 二、Flink与Spark对比 ##### 2.1 数据处理架构差异 Flink 和 Spark 在数据处理架构上有本质的不同,这些差异直接影响了它们的应用场景和性能表现。 **2.1.1 Spark 的数据处理架构** - **根本思路**:Spark ...

    Flink和Spark比较.docx

    **核心分析与计算原理** Spark的核心概念是弹性分布式数据集(Resilient Distributed Datasets, RDD),它提供了基于内存的计算模型,允许数据在计算过程中被缓存,从而提高了处理速度。RDD支持批处理和流处理,但...

    Flink快速入门与实战.pdf

    ### Flink快速入门与实战知识点总结 #### 一、Flink概述 - **定义**:Apache Flink 是一款开源的大规模数据处理框架,能够高效地处理流式数据和批处理数据,支持有状态计算。 - **特点**: - 支持无限数据流和...

    Spark源码剖析

    6. Spark在不同计算框架下的性能对比:探讨Spark与Hadoop MapReduce、Flink等其他大数据处理框架在性能上的差异,分析导致这些差异的原因,以及在实际工作中如何根据应用场景选择合适的计算框架。 7. 实验设计:...

    flink-1.16.2下载安装包,flink-1.16.2-bin-scala-2.12.zip

    7. **Flink与Spark对比** - **事件时间处理**:Flink在事件时间处理上更加强大,支持窗口和乱序事件处理。 - **延迟**:Flink通常具有更低的延迟,适合实时流应用。 8. **生态系统集成** - **Hadoop集成**:...

    Flink和Spark比较.pdf

    Apache Flink与Apache Spark是两个流行的开源大数据处理框架,它们在大数据分析领域有着广泛的应用。这两者虽然在很多方面有相似之处,但在设计理念、计算模型、API支持、硬件需求和性能等方面存在显著差异。 首先...

    各种流计算的技术路线对比spark/storm/flink

    Flink则在提供高性能的同时,也优化了对状态处理的支持,适用于复杂的数据分析任务。 最后,选择合适的流计算技术路线需要考虑到实际的应用场景和需求。例如,如果应用场景对延迟要求不是极端严格,但需要处理的...

    《Flink大数据分析实战》随书示例代码

    9. **Flink与Spark对比**: - **流批统一**:Flink的流批一体设计,Spark Streaming则模拟流处理。 - **延迟与吞吐**:Flink通常在低延迟和高吞吐上表现更优。 通过《Flink大数据分析实战》的示例代码,读者可以...

    Flink技术预研,各计算引擎对比 flink架构

    Flink 与其他计算引擎(如 Spark、Storm 等)相比,具有以下优势: * 高性能:Flink 的性能高于其他计算引擎,能够高效地处理大规模数据。 * 真正的流批一体:Flink 的流批一体 API 使得开发者可以使用同一个 API ...

    Flink快速上手.pdf

    **1.5 Flink 与 Spark 对比** - **Spark**:最初设计主要用于离线批处理。在 Spark 生态系统中,无论是流处理还是批处理,底层都是由 Spark Core 提供支持。Spark Streaming 通过不断提交微批处理任务到 Spark 引擎...

    Stream Processing with Apache Flink

    1. **与Spark Streaming对比**:Flink在低延迟和状态管理方面更胜一筹,而Spark Streaming侧重批处理优化。 2. **与Apache Storm对比**:Flink提供更高级的容错机制和更丰富的API,而Storm则强调简单和实时性。 **...

    kostas_tzumas_apache_flink_presentation.pdf

    下面我们通过与 MapReduce 和 Spark 的比较,进一步了解 Flink 的特点。 - **MapReduce**: - 采用小而可恢复的任务单元。 - 代码内部实现 map 和 reduce 函数。 - 扩展了 map/reduce 模型到 DAG 模型。 - 基于...

    尚硅谷大数据之flink教程1

    这种模式与Spark Streaming的微批次处理形成对比,后者需要等待一批数据完整后再进行处理。 2. **流与批的世界观**:Flink区分了流处理和批处理的概念。流处理处理无界数据流,即不断流动的数据,适合实时统计;而...

    Flink基础教程Flink基础教程

    Flink与Spark对比 虽然Spark和Flink都处理大数据,但Flink更专注于流处理,而Spark更擅长批处理和交互式查询。Flink的低延迟和对状态管理的支持是其独特优势。 ### 10. 学习资源与实践 掌握Flink需要理论学习与...

    利用Impala+Kudu构建准实时分析应用

    解决了传统Lamda架构处理Hadoop上快速变化数据的存储和处理技术过于复杂的问题,同时Kudu能够与Hadoop生态的其他组件比如Impala、Spark、Flume和Kafka等组件集成,大大降低了对快速变化的数据进行准实时分析的架构...

    2019年5月11号_Apache Flink China Meetup - 上海站 Meetup.zip

    【Flink与Spark对比】在实时处理领域,Flink常被与Apache Spark Streaming比较。Flink通常提供更低的延迟,更强大的流处理功能,尤其是在处理事件时间和状态管理上。而Spark Streaming则基于微批处理,更适合离线和...

Global site tag (gtag.js) - Google Analytics