Apache Flink 是什么?

什么是Apache Flink?

「Apache Flink」是一个开源的分布式流处理平台。
它与类似的产品,如「Apache Storm」和「Apache Spark Streaming」一样(由于归属于同一个Apache项目,我也觉得出了太多类似的工具了)。

他与其他平台不同之处,如下所述。

    • 高パフォーマンス&低レイテンシ(真のストリーム処理が可能)

 

    • 耐障害性に優れる(自動でイベント処理継続)

 

    ストリーム処理、バッチ処理の両方をサポートし、高レベルのAPIが提供されるAll-in-One構成

Flink栈

以下是Flink的概述。
Flink不仅支持流处理,还支持批处理,同时提供了複合事件处理(CEP)、机器学习(ML)和类似于SQL的API。
在这方面,它与Spark相似。但是,Spark是从批处理演变为流处理,而Flink则相反,是从流处理演变为批处理。

flink-stack-frontpage.png

才能或技能

在与其他平台进行比较时,最大的区别在于其卓越的容错性。
在Flink中,每个处理都是有状态的,并且在发生故障时,它具有根据该信息自动恢复处理的功能。

另外,我們還從Flink的文件中解釋了其特點。
https://flink.apache.org/features.html

在线流媒体 liú

distributed_snapshots.png

一体化系统同时支持批处理与流处理

optimizer_choice.png

APIs和库

    1. 流数据应用程序

DataStream API支持函数式处理,可以实现灵活的窗口处理。

case class Word(word: String, freq: Long)
val texts: DataStream[String] = …

val counts = text
.flatMap { line => line.split(“\\W+”) }
.map { token => Word(token, 1) }
.keyBy(“word”)
.timeWindow(Time.seconds(5), Time.seconds(1))
.sum(“freq”)

批处理应用程序

DataSet API具有类型安全和易于维护的代码,支持各种键/值数据类型。

case class Page(pageId: Long, rank: Double)
case class Adjacency(id: Long, neighbors: Array[Long])

val result = initialRanks.iterate(30) { pages =>
pages.join(adjacency).where(“pageId”).equalTo(“pageId”) {
(page, adj, out : Collector[Page]) => {
out.collect(Page(page.id, 0.15 / numPages))
for (n <- adj.neighbors) {
out.collect(Page(n, 0.85*page.rank/adj.neighbors.length))
}
}
}
.groupBy(“pageId”).sum(“rank”)

库生态系统

Flink Stack提供了针对机器学习、图分析、关系数据等高级API。

生态系统

    Flink可以与其他进行数据处理的开源软件进行广泛集成。Flink可以在YARN上运行,与HDFS、Kafka以及与Hadoop相关的产品一起使用。
广告
将在 10 秒后关闭
bannerAds