Flink 单机部署 Docker 完整指南

Apache Flink 是一个用于大规模数据处理的开源流处理框架。通过 Docker 部署 Flink 可以简化设置和管理的过程。本文将引导你完成 Flink 单机部署 Docker 的过程,适合初学者。

整体流程概述

下面的表格展示了整个部署的步骤,从环境准备到运行 Flink 任务:

步骤 描述
1 安装 Docker
2 拉取 Flink 镜像
3 创建 Flink 网络
4 启动 Flink 集群
5 访问 Flink Web UI
6 提交 Flink 任务

每一步的详细说明

步骤 1: 安装 Docker

首先,你需要在你的操作系统上安装 Docker。具体的安装步骤可以参考 [Docker 官方文档](

# 检查 Docker 是否成功安装
docker --version

这行代码将返回你的 Docker 版本,确认 Docker 已安装成功。

步骤 2: 拉取 Flink 镜像

使用 Docker 拉取 Flink 的官方镜像。

# 拉取 Apache Flink 官方镜像
docker pull flink:latest

这里我们使用 docker pull 命令从 Docker Hub 获取最新的 Flink 镜像。

步骤 3: 创建 Flink 网络

为了让 Flink 的各个部分可以相互通讯,我们需要创建一个 Docker 网络。

# 创建名为 flink-network 的网络
docker network create flink-network

该命令创建了一个名为 flink-network 的 Docker 网络。

步骤 4: 启动 Flink 集群

接下来,我们需要启动 JobManager 和 TaskManager。JobManager 是 Flink 的主控组件,TaskManager 则负责执行任务。在这里我们只需要一个 JobManager 和一个 TaskManager。

# 启动 JobManager
docker run -d --name jobmanager --net flink-network -p 8081:8081 flink:latest jobmanager

# 启动 TaskManager
docker run -d --name taskmanager --net flink-network flink:latest taskmanager
  • 第一行启动了 JobManager 并将本地的 8081 端口映射到容器的 8081 端口。
  • 第二行启动了 TaskManager,无需额外配置。

步骤 5: 访问 Flink Web UI

Flink 提供了一个 Web 界面来监控集群的状态。你可以通过浏览器访问以下地址:

http://localhost:8081

在这里,你将能够看到集群的状态以及提交的任务等信息。

步骤 6: 提交 Flink 任务

通过 Flink Web UI,你可以手动提交 Flink 任务。不过,在命令行中,我们也可以直接提交任务。例如,以下是一个简单的提交作业的命令。

# 提交一个 Flink 任务(需要有准备好的 JAR 文件)
docker exec -it jobmanager flink run /path/to/your/flink-job.jar
  • docker exec -it jobmanager:进入 JobManager 容器。
  • flink run /path/to/your/flink-job.jar:执行提交任务命令,替换 /path/to/your/flink-job.jar 为你自己的 JAR 文件路径。

类图

在 Flink 的架构中,JobManager 和 TaskManager 是两个关键组件。下面是它们的类图:

classDiagram
    class JobManager {
        +startJob()
        +cancelJob()
        +monitorJob()
    }
    class TaskManager {
        +executeTask()
        +reportStatus()
    }
    JobManager --> TaskManager : controls

总结

通过以上步骤,你成功地在 Docker 中部署了一个单机的 Flink 集群,包括启动 JobManager 和 TaskManager,访问 Web UI,以及提交 Flink 任务。虽然我们在这里只覆盖了 Flink 的基础功能,但通过 Docker 部署 Flink 可以大大简化其配置和管理过程。

接下来,你可以探索更多 Flink 的高级特性,比如流处理、状态管理、以及各类连接器等。希望本文能够帮助你更好地理解和使用 Apache Flink。欢迎你继续学习和实践!