更新一篇知识星球里面的源码分析文章,去年写的,周末自己录了个视频,大家看下效果好吗?如果好的话,后面补录发在知识星球里面的其他源码解析文章。

前言

之前自己本地 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 源码解析》—— 源码编译运行的更多相关文章

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

    更新一篇知识星球里面的源码分析文章,去年写的,周末自己录了个视频,大家看下效果好吗?如果好的话,后面补录发在知识星球里面的其他源码解析文章. 前言 之前自己本地 clone 了 Flink 的源码,编 ...

  2. Ubuntu TensorFlow 源码 Android Demo的编译运行

    Ubuntu TensorFlow 源码 Android Demo的编译运行 一. 安装 Android 的SDK和NDK SDK 配置 A:下载 国内下载地址选最新的: SDK: https://d ...

  3. EventBus源码解析 源码阅读记录

    EventBus源码阅读记录 repo地址: greenrobot/EventBus EventBus的构造 双重加锁的单例. static volatile EventBus defaultInst ...

  4. Collection集合重难点梳理,增强for注意事项和三种遍历的应用场景,栈和队列特点,数组和链表特点,ArrayList源码解析, LinkedList-源码解析

    重难点梳理 使用到的新单词: 1.collection[kəˈlekʃn] 聚集 2.empty[ˈempti] 空的 3.clear[klɪə(r)] 清除 4.iterator 迭代器 学习目标: ...

  5. Syncthing源码解析 - 源码目录说明!

    Syncthing是一个免费开源的p2p软件,Go语言编写的! 官网:https://syncthing.net/ 源码:https://github.com/syncthing/syncthing/ ...

  6. 设计模式课程 设计模式精讲 8-8 单例设计模式-Enum枚举单例、原理源码解析以及反编译实战

    1 课堂解析 2 代码演练 2.1 枚举类单例解决序列化破坏demo 2.2 枚举类单例解决序列化破坏原理 2.3 枚举类单例解决反射攻击demo 2.4 枚举类单例解决反射攻击原理 3 jad的使用 ...

  7. Flink 源码解析 —— 如何获取 ExecutionGraph ?

    https://t.zsxq.com/UnA2jIi 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 Flink 1.6. ...

  8. Flink 源码解析 —— 深度解析 Flink 是如何管理好内存的?

    前言 如今,许多用于分析大型数据集的开源系统都是用 Java 或者是基于 JVM 的编程语言实现的.最着名的例子是 Apache Hadoop,还有较新的框架,如 Apache Spark.Apach ...

  9. Flink 源码解析 —— 如何获取 JobGraph?

    JobGraph https://t.zsxq.com/naaMf6y 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 F ...

  10. Flink 源码解析 —— Flink JobManager 有什么作用?

    JobManager 的作用 https://t.zsxq.com/2VRrbuf 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac ...

随机推荐

  1. win10系统遇到的问题解决

      1.win10 计算器提示:需要新应用打开此calculator 运行calc,会出现需要新应用打开此Calculator,打开应用商店,找到计算器,仍然可以被使用,我怀疑是我自己在清理PC的注册 ...

  2. java java 内部类

    java 内部类 一.java内部类: java内部类分为: 成员内部类.静态嵌套类.方法内部类.匿名内部类 . 内部类的共性: (1).内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.c ...

  3. 使用pip安装离线包

    为了方便以后查看,特总结于此: 下载离线安装包并放到你想放的文件目录下 使用anaconda prompt安装离线文件 如果没有安装anaconda,则参照下边链接里边的操作!!! 离线环境通过pip ...

  4. [CentOS7] timedatectl设置时区

    查看当前时区日期等配置 显示可选时区 选择时区

  5. js对象的深浅拷贝

    JS数据类型可以分为(ES5,暂时不考虑ES6): 简单数据类型:Number.String.undefined.boolean 复杂数据类型:Object.Array 简单的数据类型,往往是赋值操作 ...

  6. Sessions in BSU

    Sessions in BSU 有n项考试.每项考试给定两个时间,你可以任意选择一个时间.每个时间点只能考一场考试,请问在最优情况下最早考完的时间.n<=1e6. 把题目抽象成图论模型:在每项考 ...

  7. loj#6363. 「地底蔷薇」(拉格朗日反演+多项式全家桶)

    题面 传送门 题解 肝了一个下午--我老是忘了拉格朗日反演计算的时候多项式要除以一个\(x\)--结果看它推倒简直一脸懵逼-- 做这题首先你得知道拉格朗日反演是个什么东西->这里 请坐稳,接下来 ...

  8. angular知识点总结

    angularjs angular支持的运算 逻辑运算 比较运算 三目运算 调用字符串对象的成员方法 使用直接变量表示法创建对象 使用数组 (不可以)new var (不可以)调用全局es javas ...

  9. P1969 积木大赛

    题意:给你一段序列,一次操作:[l,r]内所有数+1 初始序列全为0 现在给你最后序列,问最少操作几次能达到这样的序列 蒟蒻表示秒想到------差分啊 每次差分必有一个+1,一个-1 把差分数组求出 ...

  10. 10.19 qbxt国庆day3

    最近的题都莫名简单 经常AK 炼金术 [问题描述] 即使是最伟大的ACM选手也是需要足够的金钱来把妹的的.于是ZYB发明了一台炼金机器. 这台机器一共有三个功能: 1.能把a位沙子变成b位石油. 2. ...