在 Docker 中安装和配置 Flink
本教程将分享如何在 Docker 环境中安装和配置 Flink,这是一个流行的开源流处理框架。
1. 拉取 Flink 镜像
首先,从 Docker Hub 拉取所需的 Flink 版本。这里我们使用 flink:1.13.6-scala_2.12-java8
版本:
shell
docker pull flink:1.13.6-scala_2.12-java8
2. 创建 Docker 网络
为了方便 JobManager 和 TaskManager 容器之间的通信,我们创建一个 Docker 网络:
shell
docker network create flink-network
3. 启动 JobManager 容器
接下来,启动 JobManager 容器,这是 Flink 集群的主节点:
shell
docker run \
-itd \
--name=jobmanager \
--publish 8081:8081 \
--network flink-network \
--env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
flink:1.13.6-scala_2.12-java8 jobmanager
这条命令创建了一个名为 jobmanager
的容器,并将容器的 8081 端口映射到宿主机的 8081 端口,以便访问 Flink Web UI。
4. 启动 TaskManager 容器
然后,启动 TaskManager 容器,这是 Flink 集群的从节点:
shell
docker run \
-itd \
--name=taskmanager \
--network flink-network \
--env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
flink:1.13.6-scala_2.12-java8 taskmanager
5. 配置 Task Slots
我们可以根据需求调整 Task Slots 的数量。首先,从 TaskManager 容器复制配置文件:
bash
docker cp taskmanager:/opt/flink/conf/flink-conf.yaml /root/flink-conf.yaml
然后,在 flink-conf.yaml
文件中找到并修改 taskmanager.numberOfTaskSlots
的值。例如,将其设置为 3:
taskmanager.numberOfTaskSlots: 3
停止当前的 TaskManager 容器:
shell
docker stop taskmanager
docker rm taskmanager
重新启动 TaskManager 容器,并挂载修改后的配置文件:
bash
docker run \
-itd \
--name=taskmanager \
--network flink-network \
-v /root/flink-conf.yaml:/opt/flink/conf/flink-conf.yaml \
--env FLINK_PROPERTIES="jobmanager.rpc.address: jobmanager" \
flink:1.13.6-scala_2.12-java8 taskmanager
6. 访问 Flink Web UI
最后,我们可以通过以下 URL 访问 Flink Web UI:
http://192.168.101.101:8081/
我们看到 Available Task Slots
的数量已经更新。
结语
通过以上步骤,我们已经在 Docker 中成功安装和配置了 Flink。现在就可以开始提交和监控 Flink 作业了。