BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Apache Spark和Apache Flink,如何选择?

| 作者 谢丽 关注 12 他的粉丝 发布于 2016年3月30日. 估计阅读时间: 3 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

Spark Streaming和Flink都能提供恰好一次的保证,即每条记录都仅处理一次。与其他处理系统(比如Storm)相比,它们都能提供一个非常高的吞吐量。它们的容错开销也都非常低。之前,Spark提供了可配置的内存管理,而Flink提供了自动内存管理,但从1.6版本开始,Spark也提供了自动内存管理。这两个流处理引擎确实有许多相似之处,但它们也有着巨大的差异。近日,MapR Technologies产品经理Balaji Mohanam在公司内部的白板演示中比较Apache SparkApache Flink的不同之处,用户可以参考这种比较做出选择。

为了方便说明,Mohanam首先对批处理、微批处理和连续流操作符等三种计算模式进行了解释。批处理基本上处理静态数据,一次读入大量数据进行处理并生成输出。微批处理结合了批处理和连续流操作符,将输入分成多个微批次进行处理。从根本上讲,微批处理是一个“收集然后处理”的计算模型。连续流操作符则在数据到达时进行处理,没有任何数据收集或处理延迟。

Apache Spark和Apache Flink的主要差别就在于计算模型不同。Spark采用了微批处理模型,而Flink采用了基于操作符的连续流模型。因此,对Apache Spark和Apache Flink的选择实际上变成了计算模型的选择,而这种选择需要在延迟、吞吐量和可靠性等多个方面进行权衡。

随着数据处理能力的提高,企业开始认识到,信息的价值在数据产生的时候最高。他们希望在数据产生时处理数据,这就是说需要一个实时处理系统。但也不是所有情况都需要实时系统。Mohanam分别例举了一些适合微批处理或实时流处理的场景。比如有两个广告科技行业的场景:一个是聚合来自不同IP地址的不同IP请求,将IP归入黑名单或白名单;另一个是设法阻止一个黑名单IP的特定请求。前者使用微批处理就可以,而后者就需要实时流处理。再比如,在电信行业,统计特定用户使用的带宽,微批处理可能是一个更高效的方案,而网络异常检测就需要实时流处理了。也有一些场景,微批处理和实时流处理都适用,如在IoT行业查看特定工业设备的使用情况。

要了解更多内容,可以观看Mohanam的演示视频


感谢杜小芳对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT