Flink vs. Spark简单分析

6 篇文章 0 订阅
5 篇文章 0 订阅

  在技术架构与选型时,首先调研市面上常见的解决方案,然后从各方面进行比较,选择适合公司应用场景的技术。本文截取了文章Hadoop vs Spark vs Flink – Big Data Frameworks Comparison 中的比较表格。

各项比较

  文章来源:【 DataFlair: Hadoop vs Spark vs Flink – Big Data Frameworks Comparison 】

比较指标Apache SparkApache Flink
数据处理Hadoop生态:基于批处理,流批均可基于流处理的流批处理,独立运行库
流引擎微批处理:不足以处理实时数据与计算结果真正的流处理引擎:基于流,构建流程里\SQL\微批等
数据流基于DAG基于运行时CDG(Cyclic Dependency Graph)
计算模型收集并计算实时流,基于算子的流处理模型
性能成熟的社区背景,基于微批的流处理没有Flink优秀与其他框架相比,性能优异,特别是在机器学习和图处理方面
内存管理提供自主内存管理,Spark1.6之后逐渐转向自动内存管理自动内存管理:拥有自己的内存管理系统,独立于Java GC
容错性Exactly-Once语义基于Chandy-Lamport分布式快照:轻量级,强一致性
扩展性高扩展性,最大可扩展到8000个节点高扩展性:已知的最大集群达到了几千个节点
迭代处理基于批的迭代:每个迭代独立处理与调度基于流的迭代数据:只处理改变的数据,挺高任务的性能
支持语言基于Scala语言:Scala/Java/Python/R基于Java语言:Java/Scala/Python/R
优化点任务手动优化。最新的优化器是基于Catalyst的函数式算子优化器:1、增加新的优化手段;2、使开发者可以自定义扩展优化器根据实际程序接口进行独立优化。Flink的优化器类似于RDMS的优化过程,但优化对象为Flink程序,而不是SQL查询。
延迟性基于内存以及RDD,低延迟低延迟、高吞吐
处理速度处理速度很快大部分场景下,速度快于Spark。Flink通过去重,增加处理速度
可视化提供了Web接口可以提交/执行任务,执行计划可视化。Spark/Flink都集成到了Zeppelin中。同样提供了Web接口,可以提交和执行任务,结果的执行计划同样可以在这个接口查看
回复性根据DAG失败重试,Checkpoint机制Checkpoint机制保存数据源、中间状态
安全性Spark的安全管理一般,目前仅支持密码授权。Spark可以重用Yarn/HDFS的ACLs、Kerberos等管理方式通过Hadoop、Yarn框架的授权方式来给用户授权。
资源使用大量RAM,逐渐增加大量RAM,逐渐增加
兼容性兼容与Hadoop,能够处理HDFS、YARN、Cassandra、HIve等数据源完全兼容与Hadoop,提供了兼容性包
抽象性基于RDD的封装Dataset抽象的封装
易用性非常丰富的高级算子同样具有高级算子
交互模式提供交互Shell,可以执行AD-HOC查询跟Scala交互集成,既可以是本地模式,也可以是集群模式
实时分析每秒百万级数据处理主要用于实时流处理,虽然它也提供了较快的批处理
调度器基于内存,自己处理流调度可以使用Yarn调度,也有自己的调度器
SQL支持Spark-SQL:提供了HSQL,以及Dataframe的DSL提供了Table API和SQL类似的语言,Dataframe类似的DSL还在实验阶段,SQL接口落地时间未知
缓存缓存到内存,加快提升后续性能缓存到内存,加快提升后续性能
硬件要求中高级硬件中高级硬件
机器学习基于内存缓存以及其他手段,Spark是机器学习的强大平台与DAG相比,Flink基于CDG更有效的表现算法
代码量远小于Hadoop的代码量,更加容易执行远小于Hadoop的代码量,更加容易执行
高可用HAHA
S3支持支持支持
部署独立部署、Mesos、Yarn独立部署、Yarn
承压性手动设置基于系统架构的承压性
多重消除exactly onceexactly once
窗口属性基于时间的窗口基于记录,或其他用于自定义的窗口
许可Apache License 2.Apache License 2.

指导性原则

  对比了Flink与Spark的一些特性,那么在实际项目中,如何选择合适的处理框架呢?

  1. Ivan Mushketyk : “Apache Flink vs. Apache Spark”, 2017年
      如果你需要处理复杂的流计算,那么建议选择Flink,因为Flink对流处理的支持与性能有明显的提升。如果你不需要流计算,想要最好选择Spark。因为Spark是一个更加成熟的项目,拥有庞大的社区以及用户群体,更多的训练材料以及第三方类库。但应该记住,Flink将来临。另一边,如果你喜欢实验性的最新技术,Flink肯定是最佳选择。
      是不是意味着几年之内,我们会使用Flink?答案惊人。尽管Flink拥有很多惊奇的特性,Spark同样也具有。自从2015年引入Tungsten项目之后,Spark逐渐引入了许多特性。输赢尚未可知。

  2. Melanie Däschinger: “Apache Spark vs. Apache Flink”, 2017年
      如果高吞吐量、低延迟和良好的容错性的数据流处理需求是开发的驱动因素,那么Flink提供了一个优秀的应用程序框架[1]。如果应用程序应该嵌入到Hadoop发行版中,比如Hortonworks或Cloudera,那么Spark将是一个更好的选择,因为它已经很好地集成到各自的平台中,并得到了供应商的支持。Flink和Spark都在不断改进,以提供更简单、更快和更智能的数据处理特性。

  最终,最佳框架的决定取决于这样一个问题:“哪一个更适合我的需求?”即使是开发团队最喜欢的编程语言也可能是一个关键因素——Spark的Java API源自Scala API:这有时会导致不吸引人的Java代码。数据工程师通常更喜欢Python或Scala, Spark支持更成熟、功能更完备、速度更快的api。Spark与R的紧密集成——“数据科学的黄金之子”——在R中提供了Spark,从而很好地集成到现有的数据科学工具箱中。

参考博文

Apache Flink vs Apache Spark
Apache Flink vs. Apache Spark
Apache Flink vs Apache Spark – A comparison guide

个人见解

  Spark目前比较成熟,对各种数据源的支持也比较友好,特别是与Hadoop生态的耦合以及对Hive的支持。Flink目前操作Hive比较困难,通过HadoopInputFormat/HadoopoutputFormat来操作比较原始,或者JDBC来操作限制较多。
  从稳定性以及社区支持来看,目前Spark资源比较丰富,技术比较成熟;Flink目前社区同样比较活跃,具有较多的前瞻技术
相对而言,对实时性要求不是很好的应用场景(微秒级),Spark可以优先考虑。
  从安装以及编程角度考虑,两者安装都比较方便,且编程语言为java/Scala,比较友好。由于Flink目前处于快速成长阶段,对算子的支持没有Spark多。
  两者相似性较多,属于竞对工具,合理选择最切合应用场景的工具。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
⼤数据开源框架集锦 1 ⼤数据平台 Hadoop 离线数据的分布式存储和计算基础框架 分布式存储HDFS 离线计算引擎MapReduce 资源调度Apache YARN CDH 基于稳定版Hadoop及相关项⽬最成型的发⾏版本, 成为企业部署最⼴泛的⼤数据系统 可视化的UI界⾯中⽅便地管理 配置和监控Hadoop以及其它所有相关组件 简单来说将⼗⼏个hadoop开源项⽬集成在⼀起 HDP 基于hadoop⽣态系统开源组件构建的⼤数据分析平台 2 集群管理与监控 Cloudera Manager ⽤于部署和管理CDH集群的软件 Ambari Hadoop平台的管理软件,具备Hadoop组件的安装、管理、运维 3 ⽂件系统 HDFS 分布式⽂件系统 4 资源调度 YARN hadoop的资源管理和作业调度系统 5 协调框架 Zookeeper 分布式协调服务,解决分布式数据⼀致性⽅案 实现诸如数据发布 订阅、负载均衡、命名、集群管理 master节点管理 分布式锁和分布式队列 6 数据存储 Hbase 分布式⾯向列的NoSQL开源数据库 Cassandra 分布式的混合NoSQL数据库 ,还有C++版本ScyllaDB MongDB ⾯向⽂档的开源分布式数据库 Redis 开源的⽀持⽹络,基于内存可持久化⽇志,key-value数据库,可⽤于 数据库 缓存 消息中间件 Neo4j 开源⾼性能的NoSQL图形数据库 7 数据处理 MapReduce 分布式离线的计算框架 批处理 ⽇渐被sparkflink取代 Spark 通⽤的⼀站式计算框架 SparkCore批处理 SparkSQL交互式处理 SparkStreaming流处理 Spark Graphx图计算 Spark MLlib机器学习 Flink 流处理和批处理分布式数据处理框架 核⼼是⼀个流式的数据流执⾏引擎 类似于Spark 批处理 数据流处理 交互处理 图形处理和机器学习 Storm 分布式实时⼤数据处理系统 毫秒级别的实时数据处理能⼒ 实时分析的领导者 8 数据查询分析 Hive 基于hadoop的数据仓库,结构化 SparkSQL 处理结构化数据的spark组件 分布式的SQL查询引擎 Impala 实时交互SQL⼤数据查询引擎 Druid 实时⼤数据分析引擎 Elastic Search 分布式可扩展的实时搜索和分析引擎,基于Apache Lucene搜索引擎 9 数据收集 Flume 分布式海量⽇志采集、聚合和传输系统 Logstash 具有实时管道功能的开源数据收集引擎 10 数据交换 sqoop 数据迁移⼯具,⽤来在不同数据存储软件之间进⾏数据传输的开源软件 DataX 阿⾥巴巴开源的离线数据同步⼯具,⽤于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定 ⾼效的数据同步 11 消息系统 Pulsar 企业级分布式消息系统,有替代Kafka的趋势 Kafka 发布/订阅的消息系统,由Scala写成 RocketMQ 阿⾥巴巴分布式、队列模型的消息中间件 12 任务调度 Azkaban 批量⼯作流任务调度器,将所有正在运⾏的⼯作流的状态保存在其内存 Oozie 基于Hadoop的企业级⼯作流调度框架 将所有正在运⾏的⼯作流的状态保存SQL数据库 Cloudeara贡献给Apache的顶级项⽬ 13 数据治理 Ranger Hadoop 平台上并提供操作、监控、管理综合数据安全的框架 提供⼀个集中的管理机制,所有数据权限 Sentry Hadoop集群元数据和数据存储提供集中、细粒度的访问控制项⽬ 14 数据可视化 Kibana ⽤于和 Elasticsearch ⼀起使⽤的开源的分析与可视化平台 15 数据挖掘 Mahout 基于hadoop的机器学习和数据挖掘的⼀个分布式框架 Spark MLlib Spark的机器学习库 MADlib 基于SQL的数据库内置的可扩展的机器学习库 16 云平台技术 AWS S3 ⼀种对象存储服务,提供⾏业领先的可扩展性、数据可⽤性、安全性和性能 存储和保护各种⽤例数据 GCP Google提供的⼀套云计算服务 注册⼀个帐号,在分布在全球各地数⼗个google机房使⽤所有的基础架构服务
FlinkSpark Streaming和Storm是三种流处理框架,它们都可以用于实时数据处理。下面是它们的对比分析: 1. Flink Flink是一种新兴的流处理框架,它的特点是高性能、低延迟和高可靠性。Flink的核心是基于流的数据处理,它支持事件时间和处理时间两种时间模型,并且可以处理无限流和有限流。Flink还支持多种数据源和数据格式,包括Kafka、HDFS、Cassandra等。Flink的API非常丰富,支持Java、Scala和Python等多种编程语言,同时还提供了SQL和图处理等高级功能。 2. Spark Streaming Spark Streaming是Apache Spark的一个模块,它可以将实时数据流转换为离线批处理数据。Spark Streaming的核心是基于微批处理的模型,它将实时数据流分成一系列小批次进行处理。Spark Streaming支持多种数据源和数据格式,包括Kafka、Flume、Twitter等。Spark Streaming的API与Spark的API类似,支持Java、Scala和Python等多种编程语言,同时还提供了SQL和机器学习等高级功能。 3. Storm Storm是一种开源的分布式实时计算系统,它的特点是高吞吐量、低延迟和高可靠性。Storm的核心是基于流的数据处理,它支持事件时间和处理时间两种时间模型,并且可以处理无限流和有限流。Storm支持多种数据源和数据格式,包括Kafka、HDFS、Cassandra等。Storm的API相对较为简单,主要支持Java和Clojure两种编程语言,但是它提供了丰富的扩展机制,可以方便地扩展功能。 总体来说,FlinkSpark Streaming和Storm都是非常优秀的流处理框架,它们都有自己的特点和优势。Flink的性能和可靠性非常出色,API也非常丰富;Spark Streaming的API与Spark的API类似,可以方便地进行批处理和流处理的转换;Storm的扩展机制非常强大,可以方便地扩展功能。选择哪种框架,需要根据具体的业务需求和技术特点进行选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值