更新一篇知识星球里面的源码分析文章,去年写的,周末本身录了个视频,你们看下效果好吗?若是好的话,后面补录发在知识星球里面的其余源码解析文章。html
以前本身本地 clone 了 Flink 的源码,编译过,而后 share 到了 GitHub 上去了,本身也写了一些源码的中文注释,而且 push 到了 GitHub 上去了。这几天阿里开源了宣传已久的 Blink,结果我那个分支不可以继续 pull 下新的代码,再加上本身对 Flink 研究了也有点时间了,因此打算将这两个东西对比着来看,这样可能会学到很多更多东西,由于 Blink 是另一个分支,因此本身干脆再从新 fork 了一份,拉到本地来看源码。java
执行下面命令: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八、Flink 从0到1学习 —— Flink 中如何管理配置?
2九、Flink 从0到1学习—— Flink 不能够连续 Split(分流)?
30、Flink 从0到1学习—— 分享四本 Flink 国外的书和二十多篇 Paper 论文
3二、为何说流处理即将来?
3三、OPPO 数据中台之基石:基于 Flink SQL 构建实时数据仓库
3六、Apache Flink 结合 Kafka 构建端到端的 Exactly-Once 处理
3八、如何基于Flink+TensorFlow打造实时智能异常检测平台?只看这一篇就够了
40、Flink 全网最全资源(视频、博客、PPT、入门、实战、源码解析、问答等持续更新)
四、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 源码解析 —— 如何获取 ExecutionGraph ?
30、Flink Clients 源码解析原文出处:zhisheng的博客,欢迎关注个人公众号:zhisheng