Flink - Standalone模式集群安装部署教程(附任务提交、取消方法)
一、Standalone 模式介绍
1,基本介绍
(1)Flink 的 Standalone 模式 是 Flink 集群的一种部署方式,特点是独立运行在一组物理或虚拟机上,无需依赖外部的资源管理框架(如 Hadoop YARN 或 Kubernetes)。
(2)在这种模式下,用户需要手动配置集群中的各个节点,包括 JobManager(负责调度作业和管理资源)和 TaskManager(负责执行具体的计算任务)。
2,Standalone 模式的优点
- 部署简单,无需额外的资源管理器。
- 灵活适配各种硬件环境,适合小型或测试环境。
- 完全掌控集群资源,便于自定义调整和优化。
3,Standalone 模式的应用场景
- 开发环境或 PoC(概念验证)阶段,用于快速搭建 Flink 集群。
- 在没有资源管理系统的场景下运行小规模作业。
- 测试和调试 Flink 应用程序。
二、Standalone 模式集群搭建
1,准备工作
(1)假设我们要搭建一个一主两从的集群环境,那么我们需要准备三台 linux 服务器,其中 node1 为主节点,另外两个为从节点,具体信息如下:
主机名 | 内网 IP | 外网 IP |
node1 | 172.31.4.99 | 47.251.124.163 |
node2 | 172.31.3.72 | 47.251.121.21 |
node3 | 172.31.6.103 | 47.251.124.36 |
vi /etc/hosts
(3)然后在里面添加三台服务器的主机名和对应的 IP 地址,使得它们可以通过主机名相互访问:
(4)由于在启动 Flink 集群时,主节点需要通过 SSH 远程登录从节点以启动从节点中的进程,所以需要配置主节点到所有从节点的免密码登录。如何进行配置免密码登录,具体可以参考我之前写的文章:
(2)接着执行下面命令将下载下来的压缩包解压至指定目录(目录地址可以根据需要自行调整):
(5)然后编辑 workers 文件:
(2)启动后在 node1 上执行 jps,能看到相关的进程:




(2)然后执行如下命令提交任务:
(3)任务提交后,我们同样可以到 flink 的 web 界面上查看这个任务,以及相应的结果。
172.31.4.99 node1 172.31.3.72 node2 172.31.6.103 node3
(4)由于在启动 Flink 集群时,主节点需要通过 SSH 远程登录从节点以启动从节点中的进程,所以需要配置主节点到所有从节点的免密码登录。如何进行配置免密码登录,具体可以参考我之前写的文章:
(5)最后,我们需要在集群中的所有节点上安装配置 JDK,关于 JDK 的安装可以参考我之前写的文章:
2,Master 节点配置
wget https://dlcdn.apache.org/flink/flink-1.20.0/flink-1.20.0-bin-scala_2.12.tgz
(2)接着执行下面命令将下载下来的压缩包解压至指定目录(目录地址可以根据需要自行调整):
tar -zxvf flink-1.20.0-bin-scala_2.12.tgz -C /usr/local
(3)然后进入 Flink 目录中的 conf 目录,并编辑 config.yaml 文件:
cd /usr/local/flink-1.20.0/conf vi config.yaml
- 将 jobmanager.rpc.address 设置为主节点的主机名,吧 bind-host 改成 0.0.0.0,然后保存退出。

(4)接着编辑 masters 文件:
vi masters
- 将里面 localhost 改成主节点的主机名:
node1:8081
(5)然后编辑 workers 文件:
vi workers
- 将里面内容改成两个从节点的主机名:
node2 node3
3,Worker 节点配置
node1 节点上执行如下命令将前面修改好配置的 flink 安装包,拷贝到 node2 和 node2 上,即完成了 Worker 节点的配置
scp -rq /usr/local/flink-1.20.0 node2:/usr/local/ scp -rq /usr/local/flink-1.20.0 node3:/usr/local/
4,启动集群
(1)在 node1 节点上执行如下命令,即可启动 Flink 集群:
cd /usr/local/flink-1.20.0 bin/start-cluster.sh
(2)启动后在 node1 上执行 jps,能看到相关的进程:

(3)而在在 node2 和 node3 上执行 jps,能看到进程如下:

(4)最后我们还可以使用浏览器访问 master 节点的 Web UI 监控页面(端口 8081),可以看到 Available Task Slots 显示 2 个(取决与 taskmanager.numberOfTaskSlots 的个数)。说明整个 Flink 集群搭建成功。

附一:提交任务应用
1,准备工作
(1)Flink 安装包内已经包含一些示例 Jar 包,位于 examples 目录下。我们这里选择里面的 SocketWindowWordCount.jar 进行测试:

(2)因为 SocketWindowWordCount 是读取的 socket 流中的数据然后进行 WordCount,所以需要构造一下 socket 服务端。我们找一台服务器使用 nc 命令可以伪造一个 socket 流的服务端。
注意:如果执行命令时提示无法使用 nc 命令,可以执行 yum install -y nc 进行安装。
nc -l 9090
2,通过 WebUI 页面进行任务提交
(1)我们访问 Flink 的 WebUI 页面,点击左侧的“Submit New Job”菜单,然后点击右侧的“Add New”按钮选择 SocketWindowWordCount.jar 上传,成功后下方链表会显示该 Jar 包。

(2)我们点击新增的条目进行展开,填写请求任务启动参数,比我这里要指定 socket 服务端的 IP 和端口,然后点击“Submit”按钮就可以提交任务了。
--hostname 172.16.8.51 --port 9000

(3)打开“Jobs”->“Running Jobs”页面,由于我们提交的是一个流处理任务,可以看到这个任务一直在运行中。

(4)接下来测试一下效果,我们在 socket 服务端这边输入一些信息:

(5)我们回到 Flink WebUI 界面这边,点击进入刚才的任务,以此点击如下元素打开任务日志页面:

(6)在打开的 Taskmanager Log 页面中切换至 Stdout 选项卡,就可以看到任务输出的 WordCount 结果了:

3,通过命令行进行任务提交
(1)我们进入 flink 目录:
cd /usr/local/flink-1.20.0
(2)然后执行如下命令提交任务:
./bin/flink run ./examples/streaming/SocketWindowWordCount.jar --hostname 172.16.8.51 --port 9000
(3)任务提交后,我们同样可以到 flink 的 web 界面上查看这个任务,以及相应的结果。

附二:结束任务
1,命令行方式
如果想要停止一个 flink 任务,我们可以通过命令行的方式指定 JobID 进行停止
bin/flink cancel 83ea5b508f0e059f46c1ccd932ab0b70
2,可视化方式
我们也可以在 flink 的 WebUI 页面中取消任务。进入需要的任务页面后,点击右上角的“Cancel Job”链接进行停止。
