Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

之前也分享了不少自己的文章,但是对于 Flink 来说,还是有不少新入门的朋友,这里给大家分享点 Flink 相关的资料(国外数据 pdf 和流处理相关的 Paper),期望可以帮你更好的理解 Flink。

书籍

1、《Introduction to Apache Flink book》

Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

这本书比较薄,简单介绍了 Flink,也有中文版,读完可以对 Flink 有个大概的了解。

2、《Learning Apache Flink》

Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

这本书还是讲的比较多的 API 使用,不仅有 Java 版本还有 Scala 版本,入门看这本我觉得还是 OK 的。

3、《Stream Processing with Apache Flink》

Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

这本书是 Flink PMC 写的,质量还是很好的,对 Flink 中的概念讲的很清楚,还有不少图片帮忙理解,美中不足的是没有 Table 和 SQL API 相关的介绍。

4、《Streaming System》

Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文

这本书是讲流处理引擎的,对流处理引擎的发展带来不少的推动,书本的质量非常高,配了大量的图,目的就是让你很容易的懂流处理引擎中的概念(比如时间、窗口、水印等),我强烈的推荐大家都看一下,这本书的内容被很多博客和书籍都引用了。

Paper

这是一份 streaming systems 领域相关的论文列表 20+ 篇,涉及 streaming systems 的设计,实现,故障恢复,弹性扩展等各方面。也包含自 2014 年以来 streaming system 和 batch system 的统一模型的论文。

2016 年

Drizzle: Fast and Adaptable Stream Processing at Scale (Draft): Record-at-a-time 的系统,如 Naiad, Flink,处理延迟较低、但恢复延迟较高;micro-batch 系统,如 Spark Streaming,恢复延迟低但处理延迟略高。Drizzle 则采用 group scheduling + pre-scheduling shuffles 的方式对 Spark Streaming 做了改进,保留低恢复延迟的同时,降低了处理延迟至 100ms 量级。

Realtime Data Processing at Facebook (SIGMOD): Facebook 明确自己实时的使用场景是 seconds of latency, not milliseconds,并基于自己的需求构建了 3 个实时处理组件:Puma, Swift, 以及 Stylus。Puma, Swift 和 Stylus 都从 Scribe 读数据,并可向 Scribe 写回数据(Scribe 是 Facebook 内部的分布式消息系统,类似 Kafka)。

2015 年

The Dataflow Model: A Practical Approach to Balancing Correctness, Latency, and Cost in Massive-Scale, Unbounded, Out-of-Order Data Processing (VLDB): 来自 Google 的将 stream processing 模型和 batch processing 模型统一的尝试。在 Dataflow model 下,底层依赖 FlumeJava 支持 batch processing,依赖 MillWheel 支持 stream processing。Dataflow model 的开源实现是 Apache Beam 项目。

Apache Flink: Stream and Batch Processing in a Single Engine Apache Flink 是一个处理 streaming data 和 batch data 的开源系统。Flink 的设计哲学是,包括实时分析 (real-time analytics)、持续数据处理 (continuous data pipelines)、历史数据处理 (historic data processing / batch)、迭代式算法 (iterative algorithms - machine learning, graph analysis) 等的很多类数据处理应用,都能用 pipelined fault-tolerant 的 dataflows 执行模型来表达。

Lightweight asynchronous snapshots for distributed dataflows: Apache Flink 所实现的一个轻量级的、异步做状态快照的方法。基于此,Flink 得以保证分布式状态的一致性,从而保证整个系统的 exactly-once 语义。具体的,Flink 会持续性的在 stream 里插入 barrier markers,制造一个分布式的顺序关系,使得不同的节点能够在同一批 barrier marker 上达成整个系统的一致性状态。

Twitter Heron: Stream Processing at Scale (SIGMOD): Heron 是 Twitter 开发的用于代替 Storm 的实时处理系统,解决了 Storm 在扩展性、调试能力、性能、管理方式上的一些问题。Heron 实现了 Storm 的接口,因此对 Storm 有很好的兼容性,也成为了 Twitter 内部实时处理系统的事实上的标准。

2014 年

Trill: A High-Performance Incremental Query Processor for Diverse Analytics (VLDB): 此篇介绍了 Microsoft 的 Trill - 一个新的分析查询处理器。Trill 很好的结合以下 3 方面需求:(1) Query Model: Trill 是基于时间-关系 (tempo-relational) 模型,所以很好的支持从实时到离线计算的延迟需求;(2) Fabric and Language Integration: Trill 作为一个类库,可以很好的与高级语言、已有类库结合;以及 (3) Performance: 无论实时还是离线,Trill 的 throughput 都很高 —— 实时计算比流处理引擎高 2-4 个数量级,离线计算与商业的列式 DBMS 同等。从实现角度讲,包括 punctuation 的使用来分 batch 满足 latency 需求,batch 内使用列式存储、code-gen 等技术来提高 performance,都具有很好的借鉴意义 —— 尤其注意这是 2014 年发表的论文。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjyww.html