在 Flink 集群部署 Alink,需要部署几个 Jar 包(本文会有一个部分专门讲述如何获取)。 对于不同 Flink 集群环境,方式有些区别,本文主要讨论 Standalone 集群和 Kubernetes 集群。
由于 Alink 可以通过 Java 和 Python 两种方式提交,建议在集群部署的时候将相关 Jar 包一起部署上去。
尽管 Alink Java 没有单独提供集群部署所需 Jar 包的下载,但它们与 PyAlink 所使用的一致,所以可以从 PyAlink 的lib
目录中获取。
具体方式如下:
按照Alink快速开始 安装好 PyAlink,
执行命令python3 -c "import os; import pyalink; print(os.path.join(pyalink.__path__[0], 'lib'))"
,
在 Python 标准输出中即可拿到对应的 PyAlink lib
目录的路径。
在安装完成文件系统和Hive后,lib
目录的结构如下图所示:
将前面获取到的lib
目录中的 Jar 包拷贝到 Flink 的lib
目录后,然后按下面步骤启动 Flink 集群即可:
- 在 Flink 配置中增加:
classloader.resolve-order: parent-first
,通常在配置文件conf/flink-conf.yaml
里添加。 - 在 flink-[版本号]目录下,运行
bin/start-cluster.sh
启动集群。 - 运行
bin/taskmanager.sh start
可以增加 TaskManager。
更多内容可以参考:https://ci.apache.org/projects/flink/flink-docs-stable/ops/deployment/cluster_setup.html
将前面获取的目录中的 Jar 包放置进 Docker 镜像中,并将以下命令添加进 DockerFile,打包镜像即可。
ADD $PY_ALINK_LIB_FOLDER/* $FLINK_LIB_DIR/
使用Flink官方提供的部署方式,其中增加 classloader.resolve-order: parent-first
配置项。
参考:https://ci.apache.org/projects/flink/flink-docs-stable/ops/deployment/kubernetes.html