这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战
我第一天本地部署的Flink 第二天就挂(无奈),而且我确实没办法解决,找了各种教程也没解决,所以我决定基于 docker 部署 Flink,先去官网找教程
nightlies.apache.org/flink/flink…
Flink的官网是真的稳 在本地启动 docker 的情况下 直接 就两条命令 :
一个Flink可用于运行多个作业。集群部署完成后,每个作业都需要提交到集群中。要使用 Docker部署Flink Session 集群,您需要启动一个 JobManager 容器。为了启用容器之间的通信,我们首先设置一个必需的 Flink 配置属性并创建一个网络:
docker network create flink-network
然后我们启动 JobManager:
docker run \
--rm \
--name=jobmanager \
--network flink-network \
--publish 8081:8081 \
--env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \
flink:1.14.0-scala_2.11 jobmanager
打开{you_ip}:8001 成功显示UI图像
使用docker ps来识别和docker stop终止容器。
但是docker stop 之后 再次 docker ps -a 就发现 flink 相关的容器信息消失了, 再次打开还是需要执行
docker run \
--rm \
--name=jobmanager \
--network flink-network \
--publish 8081:8081 \
--env FLINK_PROPERTIES="${FLINK_PROPERTIES}" \
flink:1.14.0-scala_2.11 jobmanager
有没有大神知道这是为什么
而且我的 Available Task Slots 为 0 官网建议在会话模式下部署 Flink 以简化系统配置。
一个Flink Application cluste是一个运行一个作业专用群集。在这种情况下,您将作业部署为一个步骤的集群,因此不需要额外的作业提交。
该工作的文物被纳入弗林克的JVM进程的容器内的类路径和包括:
- 您的作业 jar,您通常会将其提交到Session 集群和
- 所有其他必需的依赖项或资源,未包含在 Flink 中。
要使用 Docker 为单个作业部署集群,您需要
- 使工作文物在当地下的所有容器可用
/opt/flink/usrlib, - 在Application集群模式下启动一个JobManager容器
- 启动所需数量的 TaskManager 容器