【博学谷学习记录】超强总结,用心分享 | Flink的安装部署
【博学谷IT技术支持】
Flink的安装部署
配置Flink
1. 编辑conf/flink-conf.yaml文件
vim conf/flink-conf.yaml
2. 需要修改的地方
rest.address: node1
rest.bind-address: node1
3.建议修改的地方,严格来说可以不改,但是建议修改
taskmanager.numberOfTaskSlots: 4
4.建议添加的参数,如果不添加,那么Flink集群在停止时会抛出异常,不太好看。
classloader.check-leaked-classloader: false
5.保存,然后启动集群
bin/start-cluster.sh
6.执行jps 查看进程
现在可以访问8081的页面
如上表示Flink的Standalone部署成功了
配置环境变量
编辑`/etc/profile`文件,添加如下信息:
#FLINK_HOME目录
export FLINK_HOME=/export/server/flink
export PATH=$PATH:$FLINK_HOME/bin
添加后source一下
source /etc/profile
测试
flink run /export/server/flink/examples/batch/WordCount.jar
action说明【扩展】
Flink提供了很多的action操作:
run:运行一个任务
run-application:以Application的模式来运行任务
info:打印任务执行计划
list:列出当前正在运行的任务
stop:停止一个正在运行中的任务
cancel:取消一个正在运行中的任务
Flink On Yarn模式
1. 启动HDFS
start-all.sh
2.添加Flink的兼容包:添加到flink的lib目录下
flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar
commons-cli-1.5.0.jar
三种部署模式
- Session模式(会话模式)
Flink的session模式是一种基于时间窗口的计算模式,
它根据事件的时间戳将事件分组成会话(session),即将时间戳之间的间隔小于某个阈值的事件划分到同一个会话中。
在Flink的session模式中,首先需要定义一个时间窗口,然后将事件按照时间戳分配到不同的会话中。如果一个事件的时间戳和前一个事件的时间戳之间的间隔超过了窗口大小,则会话结束,同时触发一次计算。
Flink的session模式适用于需要处理会话数据的场景,例如Web应用程序中的用户会话数据分析。在这种场景下,需要根据用户的行为时间戳将用户的访问记录分组成会话,然后对每个会话进行分析和处理。
Session模式是启动了一个Session的Flink集群,这个集群的资源是大家所共享的,任务都在这个集群下运行,运行完集群依然存在,任务使用的资源会释放。这个集群会长期运行,除非手动Kill.
启动方式:
bin/yarn-session.sh
任务提交:
flink run /export/server/flink/examples/batch/WordCount.jar
- Per-job模式(job-分离模式)
per-job模式是一种在Flink集群中提交单个作业(Job)模式。在Per-job模式下,用户需要将要执行的作业打包成一个Jar包,然后将jar包放在Flink集群中运行。Flink会为该作业分配一定数据的taskManager来执行作业中不同任务,同时需要自动调整taskManager的数量。
per-job相对与Session模式和Streaming模式,更适合一次性任务的执行,因为每次提交任务都需要重新打包jar包,并提交到Flink集群,并且在任务执行之后,Flink集群也会释放相关的资源,不会一直占用集群资源
执行操作
bin/flink run -m yarn-cluster examples/batch/WordCount.jar
- application模式
- 类似于Per-job模式
- action必须为run-application
- 客户端进程不在客户端节点创建,而是在集群中某一个节点创建
- 类似于Spark的cluster模式
在1.15版本及之后,Flink官网推荐使用application模式来提交任务。