单节点

安装包下载并解压

  1. 官网下载:https://dlcdn.apache.org/flink/,本文以1.18.1为例
  2. 创建目录

cd / #之后还会有很多大数据组件,统一放在这个文件夹下
mkdir -p /data1/platform/

#创建application文件夹,大数据任务都放在里面,不同组件用不同的文件夹
#下面文件夹先创建后,在后续配置config会用到,配置flink运行时的数据到对应位置
mkdir -p /data1/application/flink/flink-checkpoints/mkdir -p /data1/application/flink/flink-savepoints/mkdir -p /data1/application/flink/completed-jobs/mkdir -p /data1/application/flink/web-upload-dir/

  1. 解压下载好的文件到上述文件夹
    tar -zxvf flink-1.18.1-bin-scala_2.12.tgz -C /data1/platform

配置环境变量

  1. 编辑系统变量
    sudo vim /etc/profile
  2. 配置环境变量
export FLINK_HOME=/data1/platform/flink-1.18.1
export PATH=$FLINK_HOME/bin:$PATH
  1. 生效
    source /etc/profile
  2. 查看环境变量
    echo $FLINK_HOME

配置flink的config

vim "/data1/platform/flink-1.18.1/conf/flink-conf.yaml"下述配置内容如果在config中被#注释,需要取消#再修改

  1. 设置内存大小
#jobmanager 内存设置
jobmanager.memory.process.size: 5120m

#taskmanager 内存设置
taskmanager.memory.process.size: 10240m

#配置每个 taskmanager 提供的 slot 个数(任务的插槽)
taskmanager.numberOfTaskSlots: 60
  1. 容错和checkpoint配置

在文件路径中,file:/// 表示本地文件系统的协议前缀。在这种情况下,file:/// 是指定路径是基于本地文件系统的。
在file:/// 中,第一个斜杠 / 表示根目录,第二个斜杠 / 是用来分隔协议和路径部分的,第三个斜杠 / 是表示根目录下的一个目录。因此,file:/// 表示根目录下的一个目录,这种写法通常用于指定本地文件系统的路径。

#配置状态存储目录、savepoints
state.checkpoints.dir: file:///data1/application/flink/flink-checkpoints
state.savepoints.dir: file:///data1/application/flink/flink-savepoints

#配置 jobmanager 失败测试
jobmanager.execution.failover-strategy: region

#容错配置(config中可能完全没有,需要自行添加,下面的英文注释也添加进去)
# fault tolerance config
restart-strategy: fixeddelay
restart-strategy.fixed-delay.attempts: 6

#任务重启延迟 ms(config中可能完全没有,需要自行添加,下面的英文注释也添加进去)
# task restart delay ms
restart-strategy.fixed-delay.delay: 2000
  1. 设置外网访问(REST服务器)
#设置外网访问
rest.bind-address: 0.0.0.0
rest.address:0.0.0.0
rest.port: 8081

#flink 的 jar 上传目录配置(config中可能完全没有,需要自行添加,下面的英文注释也添加进去)
# jar uploading directory
web.upload.dir: /data1/application/flink/web-upload-dir
  1. 配置任务存储目录
# 配置 jobmanager 存储目录
jobmanager.archive.fs.dir: file:///data1/flink/completed-jobs/

# 配置历史任务目录
historyserver.archive.fs.dir: file:///data1/flink/completed-jobs/

启动flink程序

#开始
/data1/platform/flink-1.18.1/bin/start-cluster.sh
#终止
/data1/platform/flink-1.18.1/bin/stop-cluster.sh

查看启动进程
jps -l |grep flink

这条命令 jps -l | grep flink 是一个结合了两个命令的 Linux 命令:
jps: Java Virtual Machine Process Status Tool,用于列出当前正在运行的 Java 进程的工具。
-l: jps 命令的一个选项,表示显示完整的进程启动命令。
|: 管道符号,用于将一个命令的输出作为另一个命令的输入。
grep: 用于在文本中搜索指定模式的命令。
flink: 是要搜索的关键词,这里是指定要搜索包含 “flink” 的文本行。
因此,jps -l | grep flink 这个命令的作用是列出当前正在运行的 Java 进程的完整启动命令,并通过管道将其输出传递给 grep 命令,然后在输出中搜索包含 “flink” 的行。这样可以帮助用户快速找到包含 “flink” 关键词的 Java 进程的完整启动命令,以便进一步分析和管理这些进程。

查看webUI

访问主机ip:8081(10.12.48.2.8081)
可以在 webui 上查看 flink 运行情况,可用的 slot,任务执行情况;也可以提交任务。

如果无法访问,可能需要关闭防火墙
systemctl stop firewalld

命令行操作

还可以在命令行查看flink任务。
flink list 命令行也可以提交程序到 flink 集群。
在安装了 flink 集群的任一节点上执行:
flink run <jar> 本地执行:
java -jar <jar>

设置 flink 自动启动

Systemd 默认从目录/etc/systemd/system/读取配置文件。
但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/

vim /usr/lib/systemd/system/flink.service

[Unit]
Description=The Flink Service
After=syslog.target network.target

[Service]
Restart=always
RestartSec=1
Type=forking
TimeoutSec=120

Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/lib/jvm/jdk-17.0.8.1+1/bin"
ExecStart=/root/flink-1.18.0/bin/start-cluster.sh
ExecStop=/root/flink-1.18.0/bin/stop-cluster.sh

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable flink.service

systemctl start flink
systemctl status flink