我们在Cluster Session模式下运行Flink,并自动在Dockerfile中添加Jars:
ADD pipeline-fat.jar /opt/flink/usrlib/pipeline-fat.jar
因此,我们可以通过Flink Rest API运行此Jar,而无需提前上传Jar:
POST http://localhost:8081/:jarid/run
但现在显示了“静态”Jar,以获取:jarid
:
GET http://localhost:8081/jars
"所以我的问题是"
是否可以使用Flink Rest API
运行userlib
jar?
或者您只能通过
- 命令行界面
flink run -d -c ${JOB_CLASS_NAME} /job.jar
- 和
standalone-job --job-classname com.job.ClassName
模式?
我的替代方法(解决方法)是将jar上载到jobmanager
容器的Docker entrypoint.sh
中:
curl -X POST http://localhost:8084/jars/upload \
-H "Expect:" \
-F "jarfile=@./pipeline-fat.jar"
2条答案
按热度按时间hpcdzsge1#
我认为,遗憾的是,目前不可能在会话模式下启动flink集群,并在docker映像中预烘焙一个jar,然后使用REST API命令启动作业(如您所示)。
然而,你的变通方法对我来说似乎是个好主意。我很好奇,看看它在实践中是否对你有效。
a64a0gku2#
我设法使用命令行界面运行了一个userlib jar。
我编辑了docker compose来运行自定义的docker-entrypoint.sh。我已经添加到原始的docker-entrypoint.sh
并在docker-compose.yml文件中编辑jobmanager的原始入口点。