淘优惠

淘优惠

Flink 源码阅读环境搭建

热门文章 0

读文档和读源码的目的是不一样的,就拿 Apache Flink 这个项目来说,如果你想知道 Flink 的使用功能,设计思想,实现原理,看官方文档就足够了;如果你想了解的就是具体细节,比如说 StreamGraph 是怎么生成的或者是 Exactly Once 究竟如何实现的,那么就需要去阅读源码了。

关键是看你的目的是什么,如果你想了解思想,经验等看文档就够了,因为文档是人写给人的;如果你想了解具体细节,那应该去看源码,因为源码是人写给机器的,源码里有到底做了什么这些事情。

那么我写这篇的文章目的是什么?我的目的是,万一你已经在生产上身经百战了,对 Flink 的原理都把握住了,那么看源码是对你来说最好的进阶方式,所以我为你准备了这篇搭建环境的教程,为你节约宝贵的时间陪家人陪孩子不香吗?

通常对于阅读源码这件事情来说是有方法论可循的。

1、首先得具备前提条件

  • 相关语言和基础技术知识。比如 Java,Maven,Git,设计模式等等。如果你只会 C++,哪天心血来潮去阅读 Flink 源码,那是不现实的;
  • 开源项目的功能。需要知道这个项目是为了解决什么问题,完成什么功能,有哪些特性,如何启动,有哪些配置项。先把这个项目跑起来,能运行简单的 Demo;
  • 相关的文档。也就是庞大的工程中,有哪些模块,每个模块大概的功能是干嘛的;

这些前提知识准备好了之后,你就对这个项目有了一个感性的认识,再去阅读它的代码就轻松一些了。

在阅读代码过程中,不是说拿到源码就直接从第一个模块一行行的开始读,这样很容易迷失方向,陷入到代码细节中无可自拔。

2、其次需要关注这些重点东西

  • 接口抽象定义。任何项目代码都会有很多接口,接口的继承关系和方法,描述了它处理的数据结构,业务实体以及和其他模块的关系,理清楚这些关系是非常重要的。
  • 模块粘合层。代码中很多的设计模式,都是为了解耦各个模块的,好处就是灵活扩展,坏处就是让本来平铺直述的代码割裂成一个个模块,不那么方便阅读。
  • 业务流程。在代码一开始,不要进入细节,一方面会打消你的积极性,一方面也看不过来。要站在一定的高度,搞清楚整个的业务流程是怎样的,数据是怎么被传递的。最好可以画流程图或者时序图,方便理解和记忆。
  • 具体实现。在具体实现中,仍然需要弄清楚一些重要的点(1)代码逻辑。在代码中,有业务逻辑,是真正的业务处理逻辑;还有控制逻辑,像流程流转之类的;(2)出错处理。其实很多地方都是在处理出错的逻辑,可以忽略掉这部分逻辑,排除干扰因素;(3)数据处理。属性转换,JSON 解析,XML 解析,这些代码都比较冗长和无聊,可以忽略;(4)重要的算法。这是比较核心的地方,也是最有技术含量的地方;(5)底层交互。有一些代码是和底层操作系统或者是和 JVM 交互的,需要知道一些底层的东西;
  • 运行时调试。这是最直接的方式,可以看到代码究竟是如何跑起来的,数据是怎么样的,是了解代码最重要的方式。

总结成一句话:高屋建瓴,提纲挈领,把握方向

好了,有了这些内容心法,下面开始实战吧!

我就不具体演示了,说一下大致流程,可以自行百度,相关的文章很多的。

1、下载 Git

下载对应平台(Windows,Mac)的 Git 客户端,并安装

下载地址:

2、初始配置

$ git config --global user.name "Your Name"

$ git config --global user.email yourEmail@example.com

3、生成秘钥,并上传到 Gitee 上

ssh-keygen -t rsa

登陆 Gitee,在头像 - 设置 - 安全设置 - SSH 公钥 添加一个公钥

【【微信】】 很慢如何下载好几十 M 的源码文件呢?

你想下载任意 【【微信】】 项目,都可以在 Gitee 上导入这个 Github 项目:

导入之后,就可以下载了。当然 Apache Flink 活跃度前几的项目,Gitee 肯定是会同步的了,直接搜索即可。

然后打开 Git Bash,克隆这个项目

git@gitee.com:apache/flink.git

获取所有的分支

git fetch --tags

切换到 1.12.0 分支

git checkout release-1.12.0

这样最新发布的 1.12.0 版本源码就在本地了。

在导入 IDEA 之前,我们要配置 Maven 的镜像为阿里云的,这样下载 Jar 包比较快速。

在 Maven 安装目录的 conf 目录的 settings.xml 文件中,加入如下配置到 【【微信】】 标签中

<【【微信】】pan>>

? ?<id>alimaven</id>

? ?<name>aliyun maven</name>

? ?<url></url>

? ?<mirrorOf>central</mirrorOf> ? ? ?

</【【微信】】pan>>

打开 IDEA,直接打开即可,等待它下载好所有的依赖

导入后,可以看到有很多模块,但是各个模块的功能见名知意,非常清晰,这里我就不挨个介绍了。直接开始 Debug Flink-Clients 模块。

首先想强调一下,为什么要调试这个模块。因为这个模块是提交 Flink 作业的入口模块,代码流程相对比较清晰,调试完,就可以知道 Flink 作业是怎么提交的了。

1、我们该调试哪个对象

回忆下,大数据的 Hello,World 程序是什么,是不是 WordCount,Flink 发行版自带的例子中,就有 WordCount 程序。

下面的图,我是下载了官网的 Flink-1.12 发行版,放到我的虚拟机上了。

如何把它运行起来呢?

首先启动一个本机的 Flink 集群,把压缩包解压出来之后,什么都不要做,直接启动

BOB综合体育官方下载(中国)

      说我帅给你花:

      席绢 : 第二次买了手机非常给力

      金范龙:

      Official剧宾实 : 朱易为我国人工智能领域作出的贡献是不可磨灭的! ~

      无野白神:

      还是暖和的。

      布丁de果冻:

      这他爹爹的明明是那县表妹的原因难道不能骂了,你是雷锋他爹的重孙,一楼是不是表妹人员,脑…

      八月长安:

      机子好用就是好

      油水腻歪:

      不错,宝贝很好。物流超块。

      糖色柳丁:

      Stars : 纳闷,这分数是怎么来的。不见得有什么经商之道,就跟着安排点点点吧。

      伊婕:

      罗布奥特曼真的是太酷了,最近上了很多角色和活动,有怪兽也有奥特曼,还有角色形态,罗布真的是太帅了,然后就是传说级格尔吉欧女王的那个形态,也是挺酷的,全身银色的质感,胸前的三把武器,看着就感觉很厉害,太喜欢他了。然后其他的就是游戏的画质还是不错的,打击感也是挺强的,玩起来也很流畅,我是是属于那种偶尔有活动会充值的,所以充值的不多,但还是够玩的,不过还是希望可以多穿一些可以白嫖传说级英雄的活动,毕竟白嫖是一件多么香的事啊,希望可以有越来越多的英雄和怪兽,我太喜欢这个游戏了o(* ̄ ̄*)ブ~

      诺拉芬沙伊德:

      夏士奇

      谢上薰:

      冀翰采: 你是什么东西,等着大事化小小事化了吧,表哥的传统…

      终青清:

      看包装应该是正品吧,很快,赠品很多了

      给你暖阳:

      不错,实用

      盛娟秀:

      咋没打爱你人,楼上牛逼的理论显然已经凌驾于法律之…。

      花开六十三:

      傲慢匹夫: 准备在买件好

      激情香蕉:

      没有8那么刺激、可玩性、挑战性、多变性。

      沫沫洁洁:

      真的很好,看到就喜欢。


..618活动怎么样,618活动怎么样,618活动助手,我们组织了一个618 狂欢盛典淘宝扫一扫在哪个页面,关注淘宝618 狂欢盛典。如果你想快速完成任,加入我们的群,你将得到一些玩法与互助!