从flink1.10开始,pyflink安装无需编译源码,需要python3.5以上版本进行pip安装。
pip install apache-flink
https://pypi.org/project/apache-flink/
最近在调研flink,因是python技术栈,故研究了一番如何使用python代码来进行flink的开发,首先就是对pyflink的安装,折腾了一番终于安装成功。关于flink的介绍详见此处,本文大体介绍一下。
Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。
flink是事件驱动型,事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。比较典型的就是以kafka为代表的消息队列几乎都是事件驱动型应用。而sparkstreaming是微批次型的
微批次:
事件驱动:
flink的分层:
python table api是建立在java table api之上的
操作系统: centos7.5
python:python 3.7.6
maven:3.3.9
jdk:1.8
node:12.15.0
以上环境需要提前配置好
注意maven配置下阿里源,否则编译过程十分漫长
阿里源配置在apache-maven-3.3.9/conf/settings.xml
中,内容如下:
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
1、首先下载flink源码:https://flink.apache.org/zh/downloads.html
下载完成上传至服务器后执行以下命令:
tar -zxvf flink-1.9.2-src.tgz
cd flink-1.9.2
2、编译flink
这一步的目的是构建flink的jar包,把源码编译成python的依赖包,然后用pip安装依赖包到python库中
mvn clean install -DskipTests -Dfast
这一步问题比较大,可能会耗时较长,会出现各种奇怪的错误,根据提示内容搜索相关解决方法。
第一次测试时,似乎阿里源有问题导致的找不到很多包,次日再次编译时顺利完成。另外编译过程中如果失败,最好删掉原有的编译文件重新执行编译命令。
编译成功会显示 :
BUILD SUCCESS 注意看编译最后显示内容
进入Flink源码根目录,并执行以下命令,构建PyFlink的源码发布包和wheel包:
# 注: 执行以下命令设置版本(临时性需要)
VERSION=`grep "^version:" docs/_config.yml | awk -F'\"' '{print $2}'`
cd flink-python; perl -pi -e "s#^__version__ = \".*\"#__version__ = \"${VERSION}\"#" pyflink/version.py
# 打包
python3 setup.py sdist bdist_wheel
构建好的源码发布包和wheel包位于./flink-python/dist/目录下。使用pip安装
pip install dist/*.tar.gz
安装过程中,如果没有出现错误就安装好了,通过命令查看是否安装完成
pip freeze
本次测试没有使用源码编译后的结果安装flink,而是直接下载的完整版,见下载flink源码处图片中的第一或第二选项。
下载完成后上传至服务器,执行以下命令:
tar -zxvf flink-1.9.2-bin-scala_2.12.tgz
cd flink-1.9.0
启动本地flink
./bin/start-cluster.sh # Start Flink
以上flink服务已开启,通过浏览器访问:http://服务器id:8081可看到网站内容
参考官方案例
案例中每一步的解释,参考文章中第5篇有详细介绍
1、了解flink是什么
2、从源码构建flink(只要编译没问题,pyflink的安装就会简单许多)
3、本地flink已编译版启动flink服务
4、python代码案例
5、如何在 Apache Flink 中使用 Python API? python api架构讲述比较详细易懂的文章
6、来!PyFlink 作业的多种部署模式