学习 Flink 的第三天 Docker 部署 Flink

3,549 阅读1分钟

这是我参与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

有没有大神知道这是为什么

微信截图_20211104211340.png

而且我的 Available Task Slots 为 0 官网建议在会话模式下部署 Flink 以简化系统配置。

一个Flink Application cluste是一个运行一个作业专用群集。在这种情况下,您将作业部署为一个步骤的集群,因此不需要额外的作业提交。

工作的文物被纳入弗林克的JVM进程的容器内的类路径和包括:

  • 您的作业 jar,您通常会将其提交到Session 集群
  • 所有其他必需的依赖项或资源,未包含在 Flink 中。

要使用 Docker 为单个作业部署集群,您需要

  • 使工作文物在当地下的所有容器可用/opt/flink/usrlib
  • Application集群模式下启动一个JobManager容器
  • 启动所需数量的 TaskManager 容器