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

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

前言

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

fork

执行下面命令:git

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

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

编译

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

git checkout blink

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

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

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

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

<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 , 而后点击一波添加好友,欢迎来探讨技术。浏览器

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

[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

配套视频解析

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

<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=s0858kj6upx" allowFullScreen="true"></iframe>

相关

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

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

总结

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

博客

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

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

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

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

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

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

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

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

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

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

十一、Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 ElasticSearch

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

1三、Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 Kafka

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

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

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

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

1八、Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 HBase

1九、Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 HDFS

20、Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 Redis

2一、Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 Cassandra

2二、Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 Flume

2三、Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 InfluxDB

2四、Flink 从0到1学习 —— Flink 读取 Kafka 数据写入到 RocketMQ

2五、Flink 从0到1学习 —— 你上传的 jar 包藏到哪里去了

2六、Flink 从0到1学习 —— 你的 Flink job 日志跑到哪里去了

2七、阿里巴巴开源的 Blink 实时计算框架真香

2八、Flink 从0到1学习 —— Flink 中如何管理配置?

2九、Flink 从0到1学习—— Flink 不能够连续 Split(分流)?

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

3一、Flink 架构、原理与部署测试

3二、为何说流处理即将来?

3三、OPPO 数据中台之基石:基于 Flink SQL 构建实时数据仓库

3四、流计算框架 Flink 与 Storm 的性能对比

3五、Flink状态管理和容错机制介绍

3六、Apache Flink 结合 Kafka 构建端到端的 Exactly-Once 处理

3七、360深度实践:Flink与Storm协议级对比

3八、如何基于Flink+TensorFlow打造实时智能异常检测平台?只看这一篇就够了

3九、Apache Flink 1.9 重大特性提早解读

40、Flink 全网最全资源(视频、博客、PPT、入门、实战、源码解析、问答等持续更新)

4一、Flink 灵魂两百问,这谁顶得住?

源码解析

一、Flink 源码解析 —— 源码编译运行

二、Flink 源码解析 —— 项目结构一览

三、Flink 源码解析—— local 模式启动流程

四、Flink 源码解析 —— standalone session 模式启动流程

五、Flink 源码解析 —— Standalone Session Cluster 启动流程深度分析之 Job Manager 启动

六、Flink 源码解析 —— Standalone Session Cluster 启动流程深度分析之 Task Manager 启动

七、Flink 源码解析 —— 分析 Batch WordCount 程序的执行过程

八、Flink 源码解析 —— 分析 Streaming WordCount 程序的执行过程

九、Flink 源码解析 —— 如何获取 JobGraph?

十、Flink 源码解析 —— 如何获取 StreamGraph?

十一、Flink 源码解析 —— Flink JobManager 有什么做用?

十二、Flink 源码解析 —— Flink TaskManager 有什么做用?

1三、Flink 源码解析 —— JobManager 处理 SubmitJob 的过程

1四、Flink 源码解析 —— TaskManager 处理 SubmitJob 的过程

1五、Flink 源码解析 —— 深度解析 Flink Checkpoint 机制

1六、Flink 源码解析 —— 深度解析 Flink 序列化机制

1七、Flink 源码解析 —— 深度解析 Flink 是如何管理好内存的?

1八、Flink Metrics 源码解析 —— Flink-metrics-core

1九、Flink Metrics 源码解析 —— Flink-metrics-datadog

20、Flink Metrics 源码解析 —— Flink-metrics-dropwizard

2一、Flink Metrics 源码解析 —— Flink-metrics-graphite

2二、Flink Metrics 源码解析 —— Flink-metrics-influxdb

2三、Flink Metrics 源码解析 —— Flink-metrics-jmx

2四、Flink Metrics 源码解析 —— Flink-metrics-slf4j

2五、Flink Metrics 源码解析 —— Flink-metrics-statsd

2六、Flink Metrics 源码解析 —— Flink-metrics-prometheus

2六、Flink Annotations 源码解析

2七、Flink 源码解析 —— 如何获取 ExecutionGraph ?

2八、大数据重磅炸弹——实时计算框架 Flink

2九、Flink Checkpoint-轻量级分布式快照

30、Flink Clients 源码解析原文出处:zhisheng的博客,欢迎关注个人公众号:zhisheng

相关文章
相关标签/搜索