Apache Flink是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Flink是啥?相关的知识,希望对你有一定的参考价值。

Flink其实就是ApacheFlink,是一款业内非常火的大数据产品,由Apache软件基金会开发,核心是用Java和Scala编写的分布式流数据流引擎。Apach

Flink其实就是Apache Flink,是一款业内非常火的大数据产品,由Apache软件基金会开发,核心是用Java和Scala编写的分布式流数据流引擎。Apache Flink是个旨在提供‘一站式’ 的分布式开源数据处理框架。

Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。

此外,Flink的运行时本身也支持迭代算法的执行。

虽然,spark和storm的计算框架非常成熟,但是Flink仍然占据了一席之地。

主要在于flink在设计event time处理模型上比较优秀:watermark的计算实时性高,输出延迟低,而且接受迟到数据没有spark那么受限。

另外,Flink提供的window programming模型非常的灵活,不但支持spark、storm没有的session window,而且只要实现其提供的WindowAssigner、Trigger、Evictor就能创造出符合自身业务逻辑的window,flink可谓功能非常强大。
参考技术A Flink为流处理和批处理应用公用一个通用的引擎。
1、数据量&吞吐量&延迟性
Flink 的流处理引擎只需要很少配置就能实现高吞吐率和低延迟。
2、支持 Event Time 和乱序事件
Flink 支持了流处理和 Event Time 语义的窗口机制。
Event time 使得计算乱序到达的事件或可能延迟到达的事件更加简单。
3、状态计算的 exactly-once 语义
流程序可以在计算过程中维护自定义状态。
Flink 的 checkpointing 机制保证了即时在故障发生下也能保障状态的 exactly once 语义。
4、高度灵活的流式窗口
Flink 支持在时间窗口,统计窗口,session 窗口,以及数据驱动的窗口
窗口可以通过灵活的触发条件来定制,以支持复杂的流计算模式。
5、带反压的连续流模型
数据流应用执行的是不间断的(常驻)operators。
Flink streaming 在运行时有着天然的流控:慢的数据 sink 节点会反压(backpressure)快的数据源(sources)。
6、容错性
Flink 的容错机制是基于 Chandy-Lamport distributed snapshots 来实现的。
这种机制是非常轻量级的,允许系统拥有高吞吐率的同时还能提供强一致性的保障。
7、Batch 和 Streaming 一个系统流处理和批处理共用一个引擎
Flink 为流处理和批处理应用公用一个通用的引擎。批处理应用可以以一种特殊的流处理应用高效地运行。
8、内存管理
Flink 在 JVM 中实现了自己的内存管理。
应用可以超出主内存的大小限制,并且承受更少的垃圾收集的开销。
9、迭代和增量迭代
Flink 具有迭代计算的专门支持(比如在机器学习和图计算中)。
增量迭代可以利用依赖计算来更快地收敛。
10、程序调优
批处理程序会自动地优化一些场景,比如避免一些昂贵的操作(如 shuffles 和 sorts),还有缓存一些中间数据。

Apache Spark 和 Apache Flink 中的“流”是啥意思?

【中文标题】Apache Spark 和 Apache Flink 中的“流”是啥意思?【英文标题】:What does "streaming" mean in Apache Spark and Apache Flink?Apache Spark 和 Apache Flink 中的“流”是什么意思? 【发布时间】:2015-06-30 10:13:02 【问题描述】:

我去Apache Spark Streaming网站的时候看到一句话:

Spark Streaming 使构建可扩展的容错流应用程序变得容易。

而在Apache Flink网站上,有一句话:

Apache Flink 是一个开源平台,用于可扩展的批处理和流数据处理。

streaming applicationbatch data processingstream data processing 是什么意思?你能举一些具体的例子吗?它们是为传感器数据设计的吗?

【问题讨论】:

很可能,谷歌已经有了答案。 嗨@maasg,实际上我用谷歌搜索了它。但我仍然无法理解他们的意思。我认为,传感器数据也应该是流媒体的一部分。但我不明白为什么我需要“流媒体”的东西。我可以使用任何机器学习库来分析数据。我认为,肯定有比我想象的要多,或者与我想象的完全不同。 流数据是指无限的数据流。批数据是指有限的数据集。如果要持续接收和处理传感器数据,则需要流处理引擎。如果您的传感器数据被捕获了一段时间,您应该使用批处理引擎。 嗨@F***Hueske,非常感谢您的回答!我还有一个问题,如果我有一个非常大的数据集,已经由传感器收集,(我没有收到任何新数据)。是否还需要使用 flink 或 spark 流来分析数据集? 没有。如果您的数据集大小固定,您可以(并且可能应该)使用批处理数据处理器。 Apache Spark 和 Apache Flink 都是很好的批处理系统。 【参考方案1】:

流式数据分析(与“批量”数据分析相反)是指对典型的无限数据项流(通常称为事件)进行连续分析。

流应用的特点

流数据处理应用程序通常具有以下几点特点:

流式应用程序连续运行很长时间,并在事件出现时立即使用和处理。相比之下。批处理应用程序在文件或数据库中收集数据并稍后处理。

流应用程序经常关注结果的延迟。延迟是事件创建与分析应用程序考虑该事件之间的延迟。

由于流是无限的,许多计算不能引用整个流,而是引用流上的“窗口”。窗口是流事件子序列的视图(例如最后 5 分钟)。现实世界窗口统计的一个例子是“过去 3 天的平均股价”

在流应用程序中,事件的时间通常起着特殊的作用。根据事件的时间顺序来解释事件是很常见的。虽然某些批处理应用程序也可以做到这一点,但这并不是一个核心概念。

流应用示例

流数据处理应用的典型例子有

欺诈检测:应用程序尝试确定交易是否符合之前观察到的行为。如果不是,则该事务可能表明企图滥用。通常是延迟非常关键的应用程序。

异常检测:流应用程序构建它观察到的事件的统计模型。异常值表示异常并可能触发警报。传感器数据可能是人们想要分析异常的事件来源之一。

在线推荐者:如果访问网店的用户没有很多过去的行为信息,那么从她浏览页面和浏览文章时的行为中学习并开始生成一些内容是很有趣的直接给出初步建议。

最新数据仓库:有一些有趣的文章介绍了如何将数据仓库基础架构建模为流式应用程序,其中事件流是对数据库的更改序列,而流式应用程序计算各种仓库作为事件流的专用“聚合视图”。

还有更多...

【讨论】:

赞成,只是一个简单的问题,股票市场价格和其他警报系统是否属于流处理类别,根据您的回答,它们确实有无限数据对吗?

以上是关于Apache Flink是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Apache Flink 入门,了解 Apache Flink

Apache Flink 入门,了解 Apache Flink

Apache Flink 入门,了解 Apache Flink

如何选择Apache Spark和Apache Flink

译文《Apache Flink官方文档》 Apache Flink介绍

Apache Flink 欺诈交易检测