Fink集群搭建
1、Flink集群搭建
Local本地运行模式
在IDEA上运行就可以了,主要用于开发
StandAlone模式
Flink自带的资源管理框架,不需要依赖于任何其他的框架
1、上传解压
tar -zxvf flink-1.15.0-bin-scala_2.12.tgz -C /usr/local/soft/
2、修改环境变量
vim /etc/profile
# 将flink的bin目录配置到环境变量PATH中
3、修改Flink配置文件
cd /usr/local/soft/flink-1.15.0/conf
vim flink-conf.yaml
# 将localhost改成master
jobmanager.rpc.address: master
# 将localhost改成0.0.0.0,对所有ip开放登录
jobmanager.bind-host: 0.0.0.0
# 将localhost改成0.0.0.0,对所有ip开放登录
taskmanager.bind-host: 0.0.0.0
# 将localhost改成master,如果是node1、node2则改成对应的主机名
taskmanager.host: master
# 进行RPC远程调用时需要指定主机名
rest.address: master
# WEB服务和REST服务开发的IP地址,对所有ip开放登录
rest.bind-address: 0.0.0.0
# 如果资源不够,可以适当减少jobmanager、taskmanager的内存大小
jobmanager.memory.process.size: 800m
taskmanager.memory.process.size: 1024m
# 配置从节点
vim workers
node01
node02
# 修改master地址
vim masters
master01:8081
4、同步到node01、node02上
cd /usr/local/soft/
scp -r flink-1.15.0/ node1:`pwd`
scp -r flink-1.15.0/ node2:`pwd`
5、启动集群
# 只要在master运行
start-cluster.sh
6、访问Flink的web界面
http://master:8081
7、提交Flink任务
通过命令提交任务
flink run -c com.shujia.core.Demo01WordCount Flink-1.0.jar
通过web界面会进行提交任务
通过远程RPC调用方式进行提交任务
8、停止集群
stop-cluster.sh
-
On Yarn模式
主流的运行方式,主要用于生产环境
将Flink的计算任务提交到Yarn上运行
yarn-session先在yarn中启动一个jobMansager ,所有的任务共享一个jobmanager (提交任务更快,任务之间共享jobmanager , 相互有影响)
直接提交任务模型,为每一个任务启动一个joibmanager (每一个任务独立jobmanager , 任务运行稳定)
准备工作
-
配置环境变量,增加HADOOP_CLASSPATH
vim /etc/profile export HADOOP_CLASSPATH=`hadoop classpath`
-
添加HADOOP依赖
cp flink-shaded-hadoop-2-uber-2.7.5-10.0.jar /usr/local/soft/flink-1.15.0/lib/
-
关闭StandAlone模式
# 在master执行 stop-cluster.sh
-
启动Hadoop集群
# 在master执行 start-all.sh
提交模式
Application Mode
使用命令行提交任务完成后会自动退出,无法在本地查看日志,需要通过
yarn logs -applicationId 进程id 查看日志
会根据任务所需的资源分别去启动JobManager、TaskManager
这里的JobManager只提供给当前任务使用,无法提交新的Job给JobManager
适用于生产环境
-
提交任务
flink run-application -t yarn-application -c com.shujia.flink.core.Demo01WordCount Flink-1.0-SNAPSHOT.jar
Per-job Mode
使用该方式提交任务时,如果任务无法正常启动,可以直接在本地看到具体的报错信息
同Application Mode类似,都是由Yarn随机找NodeManager去启动JobManager和TaskManager
JobManager也是只给当前进程服务
同Application Mode区别在于提交任务时会不会检测整个任务的流程有无问题
实质是构建DataFlow是一个在本地构建(Per-job模式)、另一个是由JobManager构建(Application模式)
从1.15版本开始被弃用了
-
提交任务
又可以分为两种方式:
--attached 依附模式(默认),可以跟任务运行的状态绑定
--detached 分离模式,任务被提交后会自动退出
提交任务的client是否会伴随者任务一直运行
flink run -t yarn-per-job -c com.shujia.flink.core.Demo01WordCount Flink-1.0-SNAPSHOT.jar
Yarn-Session Mode
首先会在集群中随机分配一台NodeManager上启动JobManager
该JobManager可以给多个任务服务,多个任务可以共用一个JobManager
一旦默认job失败了,会导致JobManager也失败,就会影响其他的job
一般适用于测试环境
优点:节省部分资源,因为可以共用一个JobManager
-
准备工作
需要先启动yarn-session,启动后会得到一个application_id
# 先启动yarn-session.sh # --detached后台运行 yarn-session.sh --detached
-
提交任务
也可以指定两种方式:
--attached
--detached
前台运行、后台运行
提交任务时 需要通过-Dyarn.application.id参数指定上一步得到的application_id
flink run -t yarn-session -Dyarn.application.id=application_1668687176858_0005 -c com.shujia.flink.core.Demo01WordCount Flink-1.0-SNAPSHOT.jar