《Flink 源码解析》—— 源码编译运行

更新一篇知识星球里面的源码分析文章,去年写的,周末本身录了个视频,你们看下效果好吗?若是好的话,后面补录发在知识星球里面的其余源码解析文章。java

前言

以前本身本地 clone 了 Flink 的源码,编译过,而后 share 到了 GitHub 上去了,本身也写了一些源码的中文注释,而且 push 到了 GitHub 上去了。这几天阿里开源了宣传已久的 Blink,结果我那个分支不可以继续 pull 下新的代码,再加上本身对 Flink 研究了也有点时间了,因此打算将这两个东西对比着来看,这样可能会学到很多更多东西,由于 Blink 是另一个分支,因此本身干脆再从新 fork 了一份,拉到本地来看源码。git

fork

执行下面命令:github

git clone git@github.com:apache/flink.git

拉取的时候找个网络好点的地方,这样速度可能会更快点。apache

编译

由于本身想看下 Blink 分支的代码,因此须要切换到 blink 分支来,windows

git checkout blink

这样你就到了 blink 分支了,接下来咱们将 blink 源码编译一下,执行以下命令:浏览器

mvn clean install -Dmaven.test.skip=true -Dhadoop.version=2.7.6 -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true

maven 编译的时候跳过测试代码、javadoc 和代码风格检查,这样能够减小很多时间。微信

注意:你的 maven 的 settings.xml 文件的 mirror 添加下面这个:(这样下载依赖才能飞起来)网络

<mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

<mirror>
  <id>mapr-public</id>
  <mirrorOf>mapr-releases</mirrorOf>
  <name>mapr-releases</name>
  <url>https://maven.aliyun.com/repository/mapr-public</url>
</mirror>

执行完这个命令后,而后呢,你能够掏出手机,打开微信,搜索下微信号:zhisheng_tian , 而后点击一波添加好友,欢迎来探讨技术。maven

等了一波时间以后,你可能会遇到这个问题(看到很多童鞋都遇到这个问题,以前编译 Flink 的时候也遇到过):oop

[ERROR] Failed to execute goal on project flink-mapr-fs: Could not resolve dependencies for project com.alibaba.blink:flink-mapr-fs:jar:1.5.1: Failure to find com.mapr.hadoop:maprfs:jar:5.2.1-mapr in http://maven.aliyun.com/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus-aliyun has elapsed or updates are forced -> [Help 1]

若是你试了两遍都没编译经过,那么我这里就教你们一种方法(执行完编译命令后啥也没动就 OK 的请跳过,谁叫你运气这么好呢):

在 flink-filesystems 中把 flink-mapr-fs module 给注释掉。

上图这是我给你们的忠告,特别管用。

再次执行命令编译起来就没有错误了,若是你还有其余的错误,我猜估计仍是网络的问题,致使一些国外的 maven 依赖下载不下来或者不完整,致使的错误,暴力的方法就是和我同样,把这些下载不下来的依赖 module 注释掉,或者你能够像已经编译好的童鞋要下 maven 的 .m2 文件里面已经下载好了的依赖,而后复制粘贴到你的本地路径去,注意路径包名不要弄错了,这样通常能够解决全部的问题了,若是还有问题,我也无能为力了。

编译成功就长下图这样:

运行

而后咱们的目录是长这样的:

标记的那个就是咱们的可执行文件,就跟咱们在 Flink 官网下载的同样,咱们能够将它运行起来看下效果。

我把它移到了 /usr/local/blink-1.5.1 下了,我的习惯,喜欢把一些安装的软件安装在 /usr/local/ 目录下面。

目录结构和我之前的安装介绍文章相似,就是多了 batch_conf 目录,和 conf 目录是同样的东西,不知道为啥要弄两个配置文件目录,问过负责的人,没理我,哈哈哈。

那么咱们接下来就是运行下 Blink,进入到 bin 目录,执行可执行文件:

./start-cluster.sh

windows 能够点击 start-cluster.bat 启动,这点对 windows 用户比较友好。

执行完后命令后,在浏览器里访问地址,http://localhost:8081/ , 出现下图这样就表明 Blink 成功启动了:

上图是开源版本的白色主题,骚气的黑色主题经过在 Flink 群里得知如何改以后,编译运行后的效果以下:

一次好奇的执行了屡次上面启动命令,发现也可以正常的运行。

而后启动的日志是这样的:

说明已经启动了 9 个 Task Manager,而后看到咱们页面的监控信息以下:

能够看到监控信息里面已经有 40 个可用的 slot,这是由于 Blink 默认的是一个 Task Manager 4 个 slot,咱们总共启动了 10 个 Task Manager,因此才会有 40 个可用的 slot,注意:Flink 默认的配置是 1 个 Task Manager 只含有 1 个 slot,不过这个是能够本身分配的。

注意:开启了多个 Task Manager 后,要关闭的话,得执行一样次数的关闭命令:

./stop-cluster.sh

中文源码分析

https://github.com/zhisheng17/flink

配套视频解析

视频录制过程不免说错,还请你们能够指教

相关

更多源码解析的文章和 Flink 资料请加知识星球!

本文地址是:http://www.54tianzhisheng.cn/2019/01/30/Flink-code-compile/,未经容许,禁止转载!

总结

本篇文章是《从1到100深刻学习Flink》的第一篇,zhisheng 我带带你们一块儿如何 clone 项目源码,进行源码编译,而后运行编译后的可执行文件 blink。下篇文章会分析项目源码的结构组成。

相关文章

一、《从0到1学习Flink》—— Apache Flink 介绍

二、《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门

三、《从0到1学习Flink》—— Flink 配置文件详解

四、《从0到1学习Flink》—— Data Source 介绍

五、《从0到1学习Flink》—— 如何自定义 Data Source ?

六、《从0到1学习Flink》—— Data Sink 介绍

七、《从0到1学习Flink》—— 如何自定义 Data Sink ?

八、《从0到1学习Flink》—— Flink Data transformation(转换)

九、《从0到1学习Flink》—— 介绍Flink中的Stream Windows

十、《从0到1学习Flink》—— Flink 中的几种 Time 详解

十一、《从0到1学习Flink》—— Flink 写入数据到 ElasticSearch

十二、《从0到1学习Flink》—— Flink 项目如何运行?

1三、《从0到1学习Flink》—— Flink 写入数据到 Kafka

1四、《从0到1学习Flink》—— Flink JobManager 高可用性配置

1五、《从0到1学习Flink》—— Flink parallelism 和 Slot 介绍

1六、《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL

1七、《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 RabbitMQ

1八、《从0到1学习Flink》—— 你上传的 jar 包藏到哪里去了?