由于Dinky官方建议是在Linux解压直接用启动命令启动的,如果想将其内嵌到其他WEB应用中统一使用Jenkins部署到容器中,默认是不支持的,主要有以下几点:

1、目录访问问题

Dinky中配置集群录入了很多hadoop、flink的配置文件目录,这些目录都是Dinky部署服务器绝对路径,容器中是无法访问这些目录的,需要将这些目录挂载到容器中。

2、容器目录

在Dinky中创建org.apache.flink.yarn.YarnClusterDescriptor的时候需要获取flink dist jar,可能看名字以为是flink-dist.jar,其实源码里是获取org.apache.flink.yarn.YarnClusterClientFactory类所在的jar包路径。

在容器部署的情况下,这里得到的路径是”nested:/pigx-boot/app.jar/!BOOT-INF/lib/flink-yarn-1.18.1.jar!/“,之后下图这里就报错了,抛出:YarnDeploymentException("The Flink jar path is null");

解决方案1:在flink-conf.yaml中配置yarn.flink-dist-jar:  /data/flink/lib/flink-yarn-1.18.1.jar   # YarnConfigOptions.FLINK_DIST_JAR。

解决方案2:从上面的错误路径中用正则解析出flink-yarn-1.18.1.jar,然后定义一个根目录的全局变量,两者拼在一起就ok了。”/app-name/jar_name.jar“ + "/BOOT-INF/lib/flink-yarn-1.18.1.jar"

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐