Flink Standalone 集群安装

1. 前提条件

  1. 安装前确保集群已经完成基础环境配置
  2. 本次安装的 Flink 软件版本为:1.14.5
  3. 本次安装未开启高可用

2. 环境和参数准备

  1. 集群中有三个节点,分别为 node1,node2,node3 ,其中 jobmanager 是 node1 ,3个节点都是 taskmanager 角色。
  2. Flink 的安装目录为: /opt/flink-1.14.5

3. 配置及安装

3.1 配置修改及同步

由于 Flink 所有节点配置都相同,所以先在集群中一个节点进行配置,然后再将安装文件同步到其他节点即可,现在 node1 上进行配置,首先解压安装包到安装目录:

tar -xvzf flink-1.14.5-scala_2.11.tar.gz -C /opt/
cd flink-1.14.5/

这样就将 Flink 安装到了既定的目录: /opt/flink-1.14.5/ 下面。

然后在 node1 上编辑配置文件,修改或者增加以下配置,配置文件为 conf/flink-conf.yaml:

# jobmanager 监听地址, 这里配置为 node1
jobmanager.rpc.address: node1

# jobmanager 监听端口号
jobmanager.rpc.port: 6123

# flink jobmanager 的实例 jvm 内存
jobmanager.memory.process.size: 4096m 

# flink taskmanager 的实例 jvm 内存
taskmanager.memory.process.size: 16384m 

# 每个 taskmanager 的 slosts 个数, 根据提交的任务量设置, 通常与逻辑 cpu 核数一致
taskmanager.numberOfTaskSlots: 32

# 默认情况下任务的并行度
parallelism.default: 4

# 修改 Flink 临时文件目录 正常放在数据盘中
io.tmp.dirs: /data/flink/tmp

由于 node1 作为 jobmanager,需要修改 conf/masters 文件填写进去:

node1

修改 conf/workers 文件,添加所有的 taskmanager 节点:

node1
node2
node3

然后可以配置使用 systemd 管理 Flink 服务,正常的 systemd 服务文件已经打包到安装包内,当前的位置为:/opt/flink-1.14.5/services/flink@.service,默认内容如下:

[Unit]
Description=flink
After=network.target

[Service]
User=root
Group=root
Type=forking
ExecStart={{ flink_home }}/bin/systemd-manager.sh %i start
ExecStop={{ flink_home }}/bin/systemd-manager.sh %i stop
TimeoutSec=90s
RestartSec=10s
Restart=always
SuccessExitStatus=143
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

只需要替换 {{ flink_home }} 为实际的安装目录即可,当前修改后的内容如下:

[Unit]
Description=flink
After=network.target

[Service]
User=root
Group=root
Type=forking
ExecStart=/opt/flink-1.14.5/bin/systemd-manager.sh %i start
ExecStop=/opt/flink-1.14.5/bin/systemd-manager.sh %i stop
TimeoutSec=90s
RestartSec=10s
Restart=always
SuccessExitStatus=143
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

[Install]
WantedBy=multi-user.target

现在相关的配置已经在 node1 节点上完成配置,需要将 Flink 安装目录同步到其他所有节点:

scp -r /opt/flink-1.14.5 root@node2:/opt
scp -r /opt/flink-1.14.5 root@node3:/opt

3.2 启动集群服务

在每个节点上执行复制安装 service 文件:

# 在所有节点上执行
cd /opt/flink-1.14.5
cp services/flink@.service /usr/lib/systemd/system/
# 重新加载 systemd 服务文件
systemctl daemon-reload

然后可以启动 Flink 集群,我们在 node1 上启动 jobmanager,使用如下命令:

# 在 node1 上启动 jobmanager
systemctl start flink@jobmanager

然后我们在 node2, node2,node3 上分别启动 taskmanager,使用如下命令:

# node1
systemctl start flink@taskmanager
# node2
systemctl start flink@taskmanager
# node3
systemctl start flink@taskmanager

查看某一服务的状态:

systemctl status flink@jobmanager
systemctl status flink@taskmanager

设置开机自动启动:

systemctl enable flink@jobmanager
systemctl enable flink@taskmanager

停止服务使用:

systemctl stop flink@jobmanager
systemctl stop flink@taskmanager

运行之后可以访问 node1 查看 Web UI 界面:http://node1:8081 ,默认的端口号为 8081 能正常访问界面并且看到 taskmanager 则说明集群已经运行了。