Flink

零、前提条件

Flink集群规划

hadoop1 hadoop2 hadoop3
JobManager TaskManager TaskManager
  1. 上传安装包(在hadoop1操作)

image-20240722130840508

  1. 解压安装包
1
2
tar -zxvf /software/flink-1.19.1-bin-scala_2.12.tgz -C /opt
ln -s /opt/flink-1.19.1 /opt/flink

image-20240722131007541

  1. 配置环境变量,添加如下内容
1
2
export FLINK_HOME=/opt/flink
export PATH=$PATH:$FLINK_HOME/bin

image-20240722131055667

让环境变量生效

1
source /etc/profile

验证版本号

1
flink -v

image-20240722131123536

看到如上版本号字样,说明环境变量配置成功。

进入flink配置目录/opt/flink/conf,查看配置文件

  1. 配置flink-conf.yaml
1
vim flink-conf.yaml

找到相关配置项并修改,如下

1
2
3
4
5
6
7
jobmanager.rpc.address: hadoop1
jobmanager.bind-host: 0.0.0.0
taskmanager.bind-host: 0.0.0.0
taskmanager.host: hadoop1
rest.address: hadoop1
rest.port: 8082
rest.bind-address: 0.0.0.0

(下图以rest为例)

image-20240722142152267

  1. 配置workers
1
vim workers

把原有内容删除,添加内容如下:

1
2
hadoop2
hadoop3

image-20240722131938038

  1. 配置masters
1
vim masters 

修改后内容如下:(由于8081端口被Spark占用了,改成8082)

1
hadoop1:8082

image-20240722132109968

  1. 分发flink安装目录

确保hadoop2、hadoop3机器已开启的情况下,执行如下分发命令(注意分发的是flink-1.19.1,不是flink)。

1
2
3
4
scp -r /opt/flink-1.19.1 root@hadoop2:/opt/
scp /etc/profile root@hadoop2:/etc/
scp -r /opt/flink-1.19.1 root@hadoop3:/opt/
scp /etc/profile root@hadoop3:/etc/

让环境变量生效

1
2
ssh hadoop2 "source /etc/profile"
ssh hadoop3 "source /etc/profile"
  1. 修改hadoop2和hadoop3的配置

进入hadoop2机器flink的配置目录/opt/flink-1.19.1/conf,配置config.yaml文件

将taskmanager.host的值修改为hadoop2

1
taskmanager.host: hadoop2

hadoop3机器同理修改为hadoop3

  1. 启动flink集群

1)在hadoop1机器,执行如下命令启动集群

1
start-cluster.sh

image-20240722140517180

2)查看进程

1
sh /opt/xshell/xjps.sh

image-20240722142748823

hadoop1有StandaloneSessionClusterEntrypoint进程

hadoop2有TaskManagerRunner进程

hadoop3有TaskManagerRunner进程

看到如上进程,说明flink集群配置成功。

网页查看(http://hadoop1:8082)

image-20240722142824463

3)关闭flink集群

1
stop-cluster.sh 
  1. 运行flink提供的WordCount案例程序
1
flink run /opt/flink/examples/streaming/WordCount.jar

image-20240722143245860

  1. 查看输出的WordCount结果的末尾10行数据

    (运行时需要超过100G的内存,本人的内存不足,无法运行出结果)

  2. Web UI查看运行结果