《Flink 源码解析》—— 源码编译运行
更新一篇知识星球里面的源码分析文章,去年写的,周末自己录了个视频,大家看下效果好吗?如果好的话,后面补录发在知识星球里面的其他源码解析文章。
前言
之前自己本地 clone 了 Flink 的源码,编译过,然后 share 到了 GitHub 上去了,自己也写了一些源码的中文注释,并且 push 到了 GitHub 上去了。这几天阿里开源了宣传已久的 Blink,结果我那个分支不能够继续 pull 下新的代码,再加上自己对 Flink 研究了也有点时间了,所以打算将这两个东西对比着来看,这样可能会学到不少更多东西,因为 Blink 是另外一个分支,所以自己干脆再重新 fork 了一份,拉到本地来看源码。
fork
执行下面命令:
git clone git@github.com:apache/flink.git
拉取的时候找个网络好点的地方,这样速度可能会更快点。
编译
因为自己想看下 Blink 分支的代码,所以需要切换到 blink 分支来,
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 , 然后点击一波添加好友,欢迎来探讨技术。
等了一波时间之后,你可能会遇到这个问题(看到不少童鞋都遇到这个问题,之前编译 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
配套视频解析
视频录制过程难免说错,还请大家可以指教
相关
更多源码解析的文章和 Flink 资料请加知识星球!
本文地址是:http://www.54tianzhisheng.cn/2019/01/30/Flink-code-compile/,未经允许,禁止转载!
总结
本篇文章是《从1到100深入学习Flink》的第一篇,zhisheng 我带带大家一起如何 clone 项目源码,进行源码编译,然后运行编译后的可执行文件 blink。下篇文章会分析项目源码的结构组成。
相关文章
1、《从0到1学习Flink》—— Apache Flink 介绍
2、《从0到1学习Flink》—— Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门
3、《从0到1学习Flink》—— Flink 配置文件详解
4、《从0到1学习Flink》—— Data Source 介绍
5、《从0到1学习Flink》—— 如何自定义 Data Source ?
6、《从0到1学习Flink》—— Data Sink 介绍
7、《从0到1学习Flink》—— 如何自定义 Data Sink ?
8、《从0到1学习Flink》—— Flink Data transformation(转换)
9、《从0到1学习Flink》—— 介绍Flink中的Stream Windows
10、《从0到1学习Flink》—— Flink 中的几种 Time 详解
11、《从0到1学习Flink》—— Flink 写入数据到 ElasticSearch
12、《从0到1学习Flink》—— Flink 项目如何运行?
13、《从0到1学习Flink》—— Flink 写入数据到 Kafka
14、《从0到1学习Flink》—— Flink JobManager 高可用性配置
15、《从0到1学习Flink》—— Flink parallelism 和 Slot 介绍
16、《从0到1学习Flink》—— Flink 读取 Kafka 数据批量写入到 MySQL
17、《从0到1学习Flink》—— Flink 读取 Kafka 数据写入到 RabbitMQ
18、《从0到1学习Flink》—— 你上传的 jar 包藏到哪里去了?
《Flink 源码解析》—— 源码编译运行的更多相关文章
- Flink 源码解析 —— 源码编译运行
更新一篇知识星球里面的源码分析文章,去年写的,周末自己录了个视频,大家看下效果好吗?如果好的话,后面补录发在知识星球里面的其他源码解析文章. 前言 之前自己本地 clone 了 Flink 的源码,编 ...
- Ubuntu TensorFlow 源码 Android Demo的编译运行
Ubuntu TensorFlow 源码 Android Demo的编译运行 一. 安装 Android 的SDK和NDK SDK 配置 A:下载 国内下载地址选最新的: SDK: https://d ...
- EventBus源码解析 源码阅读记录
EventBus源码阅读记录 repo地址: greenrobot/EventBus EventBus的构造 双重加锁的单例. static volatile EventBus defaultInst ...
- Collection集合重难点梳理,增强for注意事项和三种遍历的应用场景,栈和队列特点,数组和链表特点,ArrayList源码解析, LinkedList-源码解析
重难点梳理 使用到的新单词: 1.collection[kəˈlekʃn] 聚集 2.empty[ˈempti] 空的 3.clear[klɪə(r)] 清除 4.iterator 迭代器 学习目标: ...
- Syncthing源码解析 - 源码目录说明!
Syncthing是一个免费开源的p2p软件,Go语言编写的! 官网:https://syncthing.net/ 源码:https://github.com/syncthing/syncthing/ ...
- 设计模式课程 设计模式精讲 8-8 单例设计模式-Enum枚举单例、原理源码解析以及反编译实战
1 课堂解析 2 代码演练 2.1 枚举类单例解决序列化破坏demo 2.2 枚举类单例解决序列化破坏原理 2.3 枚举类单例解决反射攻击demo 2.4 枚举类单例解决反射攻击原理 3 jad的使用 ...
- Flink 源码解析 —— 如何获取 ExecutionGraph ?
https://t.zsxq.com/UnA2jIi 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 Flink 1.6. ...
- Flink 源码解析 —— 深度解析 Flink 是如何管理好内存的?
前言 如今,许多用于分析大型数据集的开源系统都是用 Java 或者是基于 JVM 的编程语言实现的.最着名的例子是 Apache Hadoop,还有较新的框架,如 Apache Spark.Apach ...
- Flink 源码解析 —— 如何获取 JobGraph?
JobGraph https://t.zsxq.com/naaMf6y 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 F ...
- Flink 源码解析 —— Flink JobManager 有什么作用?
JobManager 的作用 https://t.zsxq.com/2VRrbuf 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac ...
随机推荐
- 配置nginx支持Https
配置nginx支持Https一定要先使用stop停止nginx然后重新代开不能使用reload 一:安装letsencrypt 1.从git上克隆下来git clone https://github. ...
- linq 事务处理
首先引用使名空间: using System.Transactions; 然后写入代码: using (TransactionScope ts = new TransactionScope()) { ...
- GridView控件点击单元格如何获取该列的列标题
本博文Insus.NET教你实现在GridView控件中,用mouse点击某单元格之后,希望能获取到该列的列标题. 创建一个网页,创建一个GridView控件: 去cs绑定数据给GridView控件: ...
- GoogLeNet InceptionV2/V3/V4
仅用作自己学习 这篇文章中我们会详细讲到Inception V2/V3/V4的发展历程以及它们的网络结构和亮点. GoogLeNet Inception V2 GoogLeNet Inc ...
- Intent要使用的ACTION都有哪些?在哪里能查到详细的ACTION呢?
Intent操作结构之一就是ACTION,这些ACTION都有哪些?在哪里能查到详细的ACTION呢? 官方文档: https://developer.android.com/reference/an ...
- J2SE-鸡汤
前言 终于开始学java了,心里免不了的开心,总是听老乡说他们公司搞java开发,用的什么什么框架,说的自己都有点眼馋了,但是根据自己的性格,不了解它,肯定不会就去用它的.所以在学习框架之前,java ...
- 洛谷P2235 [HNOI2002]Kathy函数
传送门 题解 // luogu-judger-enable-o2 //minamoto #include<cstdio> #include<cstring> using nam ...
- 【记录一下】从0到1 我的python开发之路
请设计实现一个商城系统,商城主要提供两个功能:商品管理.会员管理. 商品管理: - 查看商品列表 - 根据关键字搜索指定商品 - 录入商品 会员管理:[无需开发,如选择则提示此功能不可用,正在开发中, ...
- python解释器安装
1. 下载安装包 1 2 https://www.python.org/ftp/python/2.7.14/python-2.7.14.amd64.msi # 2.7安装包 https: ...
- STM32F030 使用硬件 SPI
前言 以前玩过一点 STM32 单片机(主要是 STM32F103 系列),去年(2017)STM32F1 涨到不知哪里去了,今年好像降下来了.F0 系列相比 F1 系列少了一些功能,最高主频只到 4 ...