摘要
准备工作
获取源码包
1 | # 下载源码包 |
为什么要这么做?
- 在编译flink-python环境包的时候需要将flink以来的jar包打包进去
- 从源码包编译需要配置mvn环境先进行jar的编译
编译安装python3.6.8
1 | # 安装环境依赖 |
安装java11
1 | yum install -y java-11-openjdk |
安装jar
1 | yum install -y maven-jar-plugin |
配置maven
使用上述的方式后不需要再配置maven环境进行编译
1 | # 下载最新版本二进制包 |
配置阿里源
打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml
),在<mirrors></mirrors>
标签中添加 mirror 子节点:
1 | <mirror> |
如果想使用其它代理仓库,可在<repositories></repositories>
节点中加入对应的仓库使用地址。以使用 spring 代理仓为例:
1 | <repository> |
在你的 pom.xml 文件<denpendencies></denpendencies>
节点中加入你要引用的文件信息:
1 | <dependency> |
执行拉取命令:
1 | mvn install |
从源码构建Flink
构建Flunk
最简单的构建 Flink 的方法是执行如下命令:
1 | mvn clean install -DskipTests |
上面的 Maven 指令(mvn
)首先删除(clean
)所有存在的构建,然后构建一个新的 Flink 运行包(install
)。
为了加速构建,可以:
使用 ’ -DskipTests’ 跳过测试
使用
fast
Maven profile 跳过 QA 的插件和 JavaDocs 的生成使用
skip-webui-build
Maven profile 跳过 WebUI 编译使用 Maven 并行构建功能,比如 ‘mvn package -T 1C’ 会尝试并行使用多核 CPU,同时让每一个 CPU 核构建1个模块。
maven-shade-plugin 现存的 bug 可能会在并行构建时产生死锁。建议分2步进行构建:首先使用并行方式运行
mvn validate/test-compile/test
,然后使用单线程方式运行mvn package/verify/install
。
构建脚本如下:
1 | mvn clean install -DskipTests -Dfast -Pskip-webui-build -T 1C |
fast
和 skip-webui-build
这两个 Maven profiles 对整体构建时间影响比较大,特别是在存储设备比较慢的机器上,因为对应的任务会读写很多小文件。
构建PyFlink
先决条件 #
构建 Flink
如果想构建一个可用于 pip 安装的 PyFlink 包,需要先构建 Flink 工程,如 构建 Flink 中所述。
Python 的版本为 3.6, 3.7 或者 3.8.
1
2python3 --version
the version printed here must be 3.6, 3.7 or 3.8构建 PyFlink 的 Cython 扩展模块(可选的)
为了构建 PyFlink 的 Cython 扩展模块,需要 C 编译器。在不同操作系统上安装 C 编译器的方式略有不同:
- Linux Linux 操作系统通常预装有 GCC。否则,需要手动安装。例如,可以在 Ubuntu 或 Debian 上使用命令
sudo apt-get install build-essential
安装。 - Mac OS X 要在 Mac OS X 上安装 GCC,你需要下载并安装 Xcode 命令行工具,该工具可在 Apple 的开发人员页面中找到。
还需要使用以下命令安装依赖项:
1
2cd /usr/local/src/flink-1.15.0
python3 -m pip install -r flink-python/dev/dev-requirements.txt- Linux Linux 操作系统通常预装有 GCC。否则,需要手动安装。例如,可以在 Ubuntu 或 Debian 上使用命令
编译依赖包
进入 Flink 源码根目录,并执行以下命令,构建 apache-flink
和 apache-flink-libraries
的源码发布包和 wheel 包:
1 | # 环境中需要有jar命令才能完成编译 |
安装依赖
至此,如果需要在环境中安装依赖就可以直接安装了
1 | python3 -m pip install dist/*.whl |
pip安装PyFlink环境
免去繁杂的编译过程直接从pypi
PyFlink 已经被发布到PyPi,免去繁杂的编译过程,可以通过如下方式安装 PyFlink:
- 缺点是包很大,带宽小的话需要下很久
1 | python3 -m pip install apache-flink==1.15.0 |