Apache?Flink?是一个框架和分布式处理引擎,
用于在无边界和有边界数据流上进行有状态的计算。
Flink?能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。
Flink并没有依靠自身实现所有分布式系统需要解决的问题,
而是在已有集群基础设施和服务之上专注于它的核心功能。
一个?Flink?集群总是包含一个?JobManager?以及一个或多个?Flink?TaskManager。
JobManager?负责处理?Job?提交、?Job?监控以及资源管理。
Flink?TaskManager?运行?worker?进程,?
负责实际任务?Tasks?的执行,而这些任务共同组成了一个?Flink?Job
官网:https://flink.apache.org/
安装包:https://flink.apache.org/downloads/
?Flink搭建需要四个不同组件
1.作业管理器(JobManager)
控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的?JobManager?所控制执行。
2.资源管理器(ResourceManager)
主要负责管理任务管理器(TaskManager)的插槽(slot),TaskManger?插槽是Flink中定义的处理资源单元。
3.任务管理器(TaskManager)
Flink中的工作进程。通常在Flink中会有多个TaskManager运行,每一个TaskManager都包含了一定数量的插槽(slots)。
插槽的数量限制了TaskManager能够执行的任务数量。
4.分发器(Dispatcher)
可以跨作业运行,它为应用提交提供了REST接口。
?一个 Flink 集群总是包含一个 JobManager 以及一个或多个 Flink TaskManager。JobManager 负责处理 Job 提交、 Job 监控以及资源管理。 Flink TaskManager 运行 worker 进程, 负责实际任务 Tasks 的执行,而这些任务共同组成了一个 Flink Job。
?进入?Flink?官网,下Apache?Flink?1.18.0
https://flink.apache.org/zh/downloads/
1.下载Linux环境下的jdk1.8
https://www.oracle.com/java/technologies/downloads/#java8
2.JDK压缩包解压
tar -zxvf jdk-8u391-linux-x64.tar.gz -C /usr/local
3.环境变量导入
vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_391
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
##环境变量生效
source /etc/profile
##确认安装是否成功
[root@flink01 conf]# java -version
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)
cat >> /etc/hosts << EOF
172.18.12.85 flink01
172.18.12.86 flink02
172.18.12.87 flink03
EOF
1.进入conf目录中,配置flink-conf.yaml文件
[root@flink01 opt]# cd /flink/flink-1.18.0/conf/
[root@flink01 conf]# ll
total 56
-rw-r--r-- 1 501 games 14142 Oct 18 20:07 flink-conf.yaml
-rw-r--r-- 1 501 games 2917 Oct 18 20:07 log4j-cli.properties
-rw-r--r-- 1 501 games 3184 Oct 18 20:07 log4j-console.properties
-rw-r--r-- 1 501 games 2041 Oct 18 20:07 log4j-session.properties
-rw-r--r-- 1 501 games 2708 Oct 18 20:07 log4j.properties
-rw-r--r-- 1 501 games 2865 Oct 18 20:07 logback-console.xml
-rw-r--r-- 1 501 games 1550 Oct 18 20:07 logback-session.xml
-rw-r--r-- 1 501 games 2314 Oct 18 20:07 logback.xml
-rw-r--r-- 1 501 games 15 Oct 24 2022 masters
-rw-r--r-- 1 501 games 10 Oct 18 20:07 workers
-rw-r--r-- 1 501 games 1434 Oct 18 20:07 zoo.cfg
[root@flink01 conf]# vi flink-conf.yaml
# jobManager 的IP地址
jobmanager.rpc.address: flink01
# 每个TaskManager 提供的任务 slots 数量大小
# 它的意思是当前task能够同时执行的线程数量 (实际生产环境建议是CPU核心-1)
taskmanager.numberOfTaskSlots: 2
jobmanager.rpc.address: node01 JobManager地址
jobmanager.rpc.port: 6123 JobManagerRPC通信端口
jobmanager.heap.size: 1024m JobManager所能使用的堆内存大小
taskmanager.heap.size: 1024m TaskManager所能使用的堆内存大小
taskmanager.numberOfTaskSlots: 2 TaskManager管理的TaskSlot个数,依据当前物理机的
核心数来配置,一般预留出一部分核心(25%)给系统及其他进程使用,一个slot对应一个core。如果
core支持超线程,那么slot个数*2
rest.port: 8081 指定WebUI的访问端口 --单节点放开此选项即可
注意:
flink01 jobmanager.rpc.address为flink01
flink02 jobmanager.rpc.address为flink01
flink03 jobmanager.rpc.address为flink01
2.配置masters文件
flink01\flink02\flink03节点均修改为:
#localhost:8081
flink01:8081
3.配置workers文件
flink01\flink02\flink03节点均修改为:
#localhost
flink02
flink03
vi /etc/profile
添加以下内容:
export FLINK_HOME=/flink/flink-1.18.0
export PATH=$PATH:$FLINK_HOME/bin
环境变量生效
source /etc/profile
启动:
start-cluster.sh
[root@flink01 ~]# start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host flink01.
root@flink02's password:
Starting taskexecutor daemon on host flink02.
root@flink03's password:
Starting taskexecutor daemon on host flink03.
[root@flink01 ~]# jps
3525 Jps
3439 StandaloneSessionClusterEntrypoint
[root@flink02 ~]# jps
1665 Jps
[root@flink03 ~]# jps
1645 Jps
停止:
stop-cluster.sh
[root@flink01 conf]# stop-cluster.sh
root@flink02's password:
Stopping taskexecutor daemon (pid: 2225) on host flink02.
root@flink03's password:
Stopping taskexecutor daemon (pid: 2205) on host flink03.
Stopping standalonesession daemon (pid: 4370) on host flink01.
可视化界面
http://192.168.3.15:18080/#/overview
1.SSH服务异常
[root@flink01 ~]# start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host flink01.
/flink/flink-1.18.0/bin/config.sh: line 525: ssh: command not found
/flink/flink-1.18.0/bin/config.sh: line 525: ssh: command not found
yum install -y openssh-clients openssh-server initscripts net-tools
netstat -anp | grep 22 --查看端口
systemctl start sshd
[root@flink02 ~]# netstat -lnput |grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 333/sshd
tcp6 0 0 :::22 :::* LISTEN 333/sshd
2.Flink web UI 打开不了解决办法
systemctl status firewalld.service查看防火墙状态,看是否是inactive
如果防火墙没有问题还开不了,看flink/conf/flink-conf.yaml里面的 rest.bind-address 参数 改为0.0.0.0
最后重启集群