Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flink 源码分析 #28

Open
wangzzu opened this issue Mar 19, 2019 · 12 comments
Open

Flink 源码分析 #28

wangzzu opened this issue Mar 19, 2019 · 12 comments
Assignees
Labels
技术系列 深入了解某一块

Comments

@wangzzu
Copy link
Owner

wangzzu commented Mar 19, 2019

近段时间会花时间研究 Flink 源码实现相关的内容,这个 issue 会记录相关的总结文章(2019.3.19立,计划半年左右把 core、runtime、table&sql 部分的内容梳理完,这个系列的文章大概会叫做【Flink 原理与实现分析】)。

最近半年工作比较忙,这个系列一直没有开始,上周 Flink 1.9 正式发布了,后面会以 Flink 1.9 的代码为例,整理一下 Flink 相关的内容,计划元旦前把几个核心的模块整理完。--- 2019.8.25 立

以 Apache Flink 1.9 的代码为例,来系统全面地分析一些 Flink 的实现,虽然 Google 上已经可以搜到很多 Flink 的内容,但是我还是准备自己再开一个系列,出发点有两点:

  1. 自己更好地理解这个系统,别人梳理再好,也不如自己梳理一遍,这个过程肯定会让自己更好地掌握这套系统;
  2. 给其他想学习 Flink 的同学多个参考,不同人写的博客他们的理解是不同的,大家可以多看一些,可以更好、更快地熟悉这个系统。

之前写过 Kafka 源码分析的系列博客,说实话,这个系列写得整体并不是很满意,其他同学看的时候并不是那么容易理解,所以对于 Flink 这个系列文章还是期望能完成得更好一些。对于这个系列的博客,希望做到以下几点:

  1. 文章的质量的把控:逻辑性、叙述得准确性,最好每篇文章能单独成一个模块,既能让初学者可以很清晰看明白这篇文章要讲述的内容,又要有一定的深度(深入分析是必不可少的,不能蜻蜓点水),让进阶者也能有一定的收获;
  2. 单篇文章篇幅不要太长,如果太长,最好拆成多篇文章来讲述;
  3. 图 & 示例 & 思考:尽量多用图来表达,可以举示例的地方举出一些示例,每篇文章最后总结也要多一些思考总结、多想一些为什么(这个是要解决什么问题、你来解决的话你会怎么解决这个问题、Flink 在实现的时候为什么要这么设计、这个代码实现有更好的实现方式或者有没有什么可借鉴的地方);
    最后,希望自己能很好地完成这个系列,希望能在 20 年前完成这个系统,到现在也就不到三个月了,加油,挑战一下试试~ -- 2019.10.20 立
@wangzzu wangzzu self-assigned this Mar 19, 2019
@zhougit86
Copy link

zhougit86 commented Aug 10, 2019

@wangzzu 大佬什么时候开始介绍flink,谢谢

@wangzzu
Copy link
Owner Author

wangzzu commented Aug 11, 2019

@zhougit86 快了,最近有点忙,下周开始写 Flink 相关的博客,争取半年内把核心内容介绍完。

@zhaochuanyun
Copy link

zhaochuanyun commented Aug 20, 2019

请教个问题,flink里面的datastream都是按照window的方式进行操作的吗?如果不手动指定datasteam的window操作直接进行其他算子的运算,默认会把datastream转成window再来操作吗?

@wangzzu
Copy link
Owner Author

wangzzu commented Aug 20, 2019

@zhaochuanyun 这个代码实现我还没看,但我理解应该不会这样做,如果不需要 window,DataStream 再转化为 window 去做,性能反而会受影响,这个有点使力太猛了

@wangzzu
Copy link
Owner Author

wangzzu commented Sep 5, 2019

整体还是会是以源码分析的形式来讲述。

这个系列会以最新的 1.9 代码为示例,按照以下模块来介绍:

  1. runtime 相关,会涉及到 graph 转换、调度模块(主要还是分布式实现相关)、state 和 checkpoint 来介绍;
  2. SQL 模块,这块包含的内容也有很多,会单独来介绍。
  3. 算子模块(包含 DataStream/Table API),也会涉及到 operator 相关的内容;

Runtime 模块

  1. Apache Flink 初探,Flink 的 简介、架构、部署和示例,完成时间:2019-11-23;

Graph 转换

  1. StreamGraph 的转换:Flink DataStream API 概述及 StreamGraph 如何转换,完成时间:2019-12-08;
  2. JobGraph 的转换:Flink Streaming 作业如何转化为 JobGraph,完成时间:2019-12-10;
  3. ExecutionGraph 的转换:Flink 如何生成 ExecutionGraph,完成时间:2019-12-19;

调度模块

  1. Flink Master:包含三部分:Resource Manager, Dispatcher and JobManager,主要介绍前两个,Flink Master 详解,完成时间:2019-12-23;
  2. Flink JobManager 详解,完成时间:2019-12-27;
  3. TaskManager 详解第一篇 Flink TaskManager 详解(一),计划时间:2020-01-05 前,完成时间:2020-03-15;
  4. Flink 基于 MailBox 实现的 StreamTask 线程模型,完成时间:2020-03-22;
  5. 调度模型,计划时间:2020-01-05 前;
  6. Flink 中的 AKKA 应用;
  7. Flink 中的 BlobServer;
  8. TaskManager 的内存管理;
  9. JobManager 的 HA 实现;

state & checkpoint

  1. StateBackend 实现;
  2. Checkpoint 流程;

on yarn

  1. Yarn 提交流程详解;

Shuffle 模块

  1. 网络协议栈;
  2. Shuffle 实现;

SQL 模块

算子模块

@wangzzu wangzzu changed the title Flink 原理与实现 Flink 源码分析 Sep 9, 2019
@wangzzu
Copy link
Owner Author

wangzzu commented Jan 2, 2020

这个 issue 今年最终还是没搞完,抽空得赶紧搞

@wangzzu wangzzu added the 技术系列 深入了解某一块 label Feb 3, 2020
@wangzzu
Copy link
Owner Author

wangzzu commented Apr 3, 2020

当前网上 Flink 的博客还是比较多的,后续的文章(第九篇开始)尽量会写出自己的特色,按照相应的小模块去总结。

@herefree
Copy link

herefree commented Jul 29, 2020

期待大佬更新

@wangzzu
Copy link
Owner Author

wangzzu commented Jul 29, 2020

@herefree 最近工作有所变动,比较忙一些,等过了这段时间争取早点把这个系列更新完

@bitxiaoGit
Copy link

bitxiaoGit commented Oct 22, 2020

等待大佬进行更新

@brokenpieces
Copy link

brokenpieces commented Jun 16, 2021

不错呀大佬。

@Mrzyxing
Copy link

Mrzyxing commented Mar 8, 2022

很好的榜样!
我也开始走读源码啦,如果后续能写完,再补一下我的,大家互相交流下~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
技术系列 深入了解某一块
Projects
None yet
Development

No branches or pull requests

7 participants