Flink的使用和介绍
本周我们很高兴邀请到了Xin Zhao给我们带来《Flink的使用和介绍》,相关的内容总结如下:
Slides
Xin Zhao使用的Slides见这里。
Q&A
感谢Becky和张程给我们做的详细笔记,相关的提问总结如下:
Flink对比spark如何进行选择?
- 得益于Flink底层的架构设计,Flink的速度要比Spark快。
- Flink对streaming的处理(native)使其对比spark(micro batch)有一定的优势。
- Spark会在executor和in-memory state store之间share memory,很容易会有Out-Of-Memory的问题出现。
- Spark目前来说使用更加广泛一点,所以社区支持相对比较好。
- 【扩展】很详细的对比文章:Spark Vs. Flink
- 【扩展】我们之前关于Spark介绍的总结:Apache Spark基本架构和工作原理介绍
- 【扩展】另外一篇还不错的对比文章:Apache Flink vs Spark – Will one overtake the other?
- 【扩展】Streaming和batch的对比介绍:The Big Data Debate: Batch Versus Stream Processing
- 【扩展】micro batch和real time streaming的介绍:Micro Batch Processing
Flink是如何实现HA的?
- 相关的思想还是让JobManager能够做到HA,这样就先可以继续资源管理和schedule。具体可以参考官网关于HA的介绍,主要有基于ZooKeeper和Kubernetes的两种实现。
- 【扩展】从源码级别对Flink HA分析的文章:如何实现生产环境中的Flink高可用
- 【扩展】Flink使用ZooKeeper/Kubernetes实现HA的介绍文章:Flink JM HA 在 Kubernetes 上的实现
Flink中WaterMark是如何生成和使用的?
- WaterMark主要就是用来告知当前event time的进程的,主要作用是用来防止数据乱序或者指定时间没有获取到全部数据。
- 它本质上还是一个时间戳,反应的是事情发生的时间。
- 是应该翻译成“水印”还是“水位线”其实不重要,主要还是看大家的理解。
- 官网对WaterMark的解释。
- 【扩展】很详细的从产生到实现详细介绍WaterMark并包含源码分析的文章:[白话解析] Flink的Watermark机制
- 【扩展】更直白,但是有不同示例的介绍WaterMark的文章:这一次带你彻底搞懂 Flink Watermark
Flink中如何做到Exactly Once/at most once?
- 实现的Exactly once还是at most once和你选择Source以及Sink是息息相关的,官网有相关source和sink对应Guarantee可以参考。
- 【扩展】很经典的一篇关于如何使用Flink+Kafak实现Exactly once的介绍文章:An Overview of End-to-End Exactly-Once Processing in Apache Flink® (with Apache Kafka, too!) (中文翻译)
Flink是如何做到容错的?
- 官网有详细介绍容错的机制。
- 【扩展】非常好介绍Flink容错机制的文章,包含了作业执行容错以及守护进程容错两个方面,个人觉得容错看这一篇应该足够了:深入理解 Flink 容错机制
Flink是如何实现去重的?
- 可以使用redis/幂等等方式来进行去重。
- 【扩展】这篇文章主要介绍了MapState,SQL,HyperLogLog以及Bitmap几种去重方式:基于Flink 的实时 精准去重方法总结
- 【扩展】这篇文章主要介绍了布隆过滤器,RocksDB以及Redis三种去重的方法:Flink海量数据去重方案
Flink是如何实现Join的?
- 官网有详细的关于stream join和SQL join方法的介绍。
- 【扩展】详细介绍了Flink中双流join的机制,并且与传统数据库join进行了一些对比,比较形象:Apache Flink 漫谈系列(09) – JOIN 算子
- 【扩展】从实战的角度来看如何在Flink中进行流Join:Flink SQL 实战:双流 join 场景应用
再次感谢大家的参与,也希望大家有好的资源能联系我更新这篇文章。谢谢大家。
下周话题安排和往期话题回顾敬请参见《系统设计开荒小分队话题讨论简介》
Recent Comments