集群角色
Flik提交作业和执行任务,需要几个关键组件:
-
客户端(Client)
:代码由客户端获取
并做转换
,之后提交给JobManger -
JobManager
:就是Fink集群里的"管事人
",对作业进行中央调度管理;而它获取到要执行的作业后,会进一步处理转换
,然后分发任务给众多的TaskManager。 -
TaskManager
:就是真正"干活的人
",数据的处理操作
都是它们来做的。
Flink 运行时由两种类型的进程组成:一个 JobManager 和一个或者多个 TaskManager。
安装部署
开两台虚拟机部署,部署Flink之前虚拟机自行安装JDK环境,Flink运行依赖JDK。
节点服务器 | 192.168.197.130 | 192.168.197.131 |
---|---|---|
角色 | JobManager TaskManager |
TaskManager |
1)下载并解压安装包
(1)下载安装包 flink-1.17.0-bin-scala_2.12.tgz,将该 文件上传到/home/likelong/Desktop/software
(2)解压
shell
tar -zxvf flink-1.17.0-binscala_2.12.tgz
2)修改集群配置
(1) 进 入 conf 路 径 , 修 改 flink-conf.yaml 文 件 , 指定 192.168.197.130 节点服务器为JobManager
修改如下内容:
yaml
# JobManager 节点地址.
jobmanager.rpc.address: 192.168.197.130
jobmanager.bind-host: 0.0.0.0
rest.address: 192.168.197.130
rest.bind-address: 0.0.0.0
# TaskManager 节点地址.需要配置为当前机器名
taskmanager.bind-host: 0.0.0.0
taskmanager.host: 192.168.197.130
(2)修改 workers 文件,指定 192.168.197.130 和 192.168.197.131 为TaskManager
shell
[likelong@localhost conf]$ vim workers
修改如下内容:
shell
192.168.197.130
192.168.197.131
(3)修改 masters 文件
shell
[likelong@localhost conf]$ vim masters
修改如下内容:
shell
192.168.197.130:8081
(4)另外,可以在 flink-conf.yaml 文件中还可以对集群中的 JobManager 和TaskManager 组件进行优化配置,主要配置项如下:
jobmanager.memory
.process.size:对 JobManager 进程可使用到的全部内存进行配置,包括 JVM 元空间和其他开销,默认为 1600M
,可以根据集群规模进行适当调整。taskmanager.memory
.process.size:对 TaskManager 进程可使用到的全部内存进行配置,包括 JVM 元空间和其他开销,默认为 1728M
,可以根据集群规模进行适当调整。taskmanager.numberOfTaskSlots
:对每个 TaskManager 能够分配的Slot 数量进行配置,默认为 1
,可根据 TaskManager 所在的机器能够提供给Flink 的CPU数量决定。所谓 Slot 就是 TaskManager 中具体运行一个任务所分配的计算资源
。parallelism.default
:Flink 任务执行的并行度,默认为1
。优先级低于代码中进行的并行度配置和任务提交时使用参数指定的并行度数量。
3)分发安装目录
(1)将整个修改好的 Flink 解压目录使用 scp 远程拷贝命令发送到从节点
shell
scp -r /home/likelong/Desktop/software/flink-1.17.0 192.168.197.131:/home/likelong/Desktop/software
(2)修改 192.168.197.131 的 taskmanager.host
shell
vim flink-conf.yaml
修改如下内容:
yaml
# TaskManager 节点地址.需要配置为当前机器名
taskmanager.host: 192.168.197.131
4)启动集群
(1)在 192.168.197.130 节点服务器上执行 start-cluster.sh 启动Flink 集群:
shell
bin/start-cluster.sh
(2)查看进程情况:
shell
[root@localhost bin]# jps -l
5)访问 Web UI
开放8081端口:
shell
sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent
sudo firewall-cmd --reload
启动成功后,同样可以访问 http://192.168.197.130:8081 对 flink 集群和任务进行监控管理。
可以看到,当前集群的 TaskManager 数量为 2;由于默认每个TaskManager的Slot 数量为 1,所以总 Slot 数和可用 Slot 数都为 2。
向集群提交作业
1)环境准备
目标主机,运行程序
shell
nc -lk 7777
2)程序打包
pom.xml 文件中添加打包插件的配置
xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<artifactSet>
<excludes>
<exclude>com.google.code.findbugs:jsr305</exclude>
<exclude>org.slf4j:*</exclude>
<exclude>log4j:*</exclude>
</excludes>
</artifactSet>
<filters>
<filter>
<!-- Do not copy the signaturesinthe META-INF folder.
Otherwise, this mightcauseSecurityExceptions when using the JAR. -->
<artifact>*:*</artifact>
<excludes>
<exclude>METAINF/*.SF</exclude>
<exclude>METAINF/*.DSA</exclude>
<exclude>METAINF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers combine.children="append">
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer">
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
将依赖添加一个作用域,打包时依赖不需要打包进去,这样打包大小会小一些
此时发现启动会报错,只需修改运行配置即可,步骤如下:
Edit Configurations -> Modify options 勾选如下按钮即可(idea 2023.1.5版本)
防止后面每个项目都要单独设置,可以统一配置模板,步骤如下:
打包。maven先clean再package
3)在 Web UI 上提交作业
- 提交jar包
- 类一定要配置,并且是全限定名,然后提交任务
- 如下步骤,查看标准输出和日志
此时任务能够顺利运行。
- 点击该任务,可以查看任务运行的具体情况,也可以通过点击"Cancel Job"结束任务运行
4)命令行提交作业
只需运行如下命令即可(注意jar包位置),效果与上述UI提交一致:
shell
bin/flink run -m 192.168.197.130:8081 -c com.lkl.StreamSocketWordCount ../day5-flink-1.0-SNAPSHOT.jar
参数 -m
指定了提交到的 JobManager,-c
指定了入口类
提交成功,运行效果一致。
在/flink-1.17.0/log 路径中,可以查看 TaskManager 节点
单节点部署
如果仅是单节点部署
修改flink配置文件 flink-conf.yaml
找到如下配置,默认localhost ,修改为0.0.0.0,启动即可【为了远程可以访问Flink UI界面】