当前位置: > > > Flink - Standalone模式集群安装部署教程(附任务提交、取消方法)

Flink - Standalone模式集群安装部署教程(附任务提交、取消方法)

一、Standalone 模式介绍

1,基本介绍

(1)FlinkStandalone 模式 是 Flink 集群的一种部署方式,特点是独立运行在一组物理或虚拟机上,无需依赖外部的资源管理框架(如 Hadoop YARNKubernetes)。
(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

(2)为方便后续服务器间相互访问,我们在三台服务上均执行如下命令编辑的 host 文件:
vi /etc/hosts

(3)然后在里面添加三台服务器的主机名和对应的 IP 地址,使得它们可以通过主机名相互访问:
172.31.4.99 node1
172.31.3.72 node2
172.31.6.103 node3

(4)由于在启动 Flink 集群时,主节点需要通过 SSH 远程登录从节点以启动从节点中的进程,所以需要配置主节点到所有从节点的免密码登录。如何进行配置免密码登录,具体可以参考我之前写的文章:

(5)最后,我们需要在集群中的所有节点上安装配置 JDK,关于 JDK 的安装可以参考我之前写的文章:

2,Master 节点配置

(1)我们访问 Apache Flink 官方下载页面(点击访问),选择合适的 Flink 版本下载。这里我选择的是 1.20.0 版本,首先我们登录 node1 节点进行下载:
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 安装包,拷贝到 node2node2 上,即完成了 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)而在在 node2node3 上执行 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)我们访问 FlinkWebUI 页面,点击左侧的“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)任务提交后,我们同样可以到 flinkweb 界面上查看这个任务,以及相应的结果。

附二:结束任务

1,命令行方式

如果想要停止一个 flink 任务,我们可以通过命令行的方式指定 JobID 进行停止
bin/flink cancel 83ea5b508f0e059f46c1ccd932ab0b70

2,可视化方式

我们也可以在 flinkWebUI 页面中取消任务。进入需要的任务页面后,点击右上角的“Cancel Job”链接进行停止。
评论0