实用指南:Flink集群部署以及作业提交模式详解

news/2025/12/1 14:24:57/文章来源:https://www.cnblogs.com/ljbguanli/p/19292672

实用指南:Flink集群部署以及作业提交模式详解

一、Flink部署

环境版本:

  • Flink1.17.0
  • hadoop2.7.6
  • jdk1.8

1.集群角色

Flink支持不同的部署模式和资源平台。例如standalone模式、Yarn模式等,Job提交方式有Session模式、Per job模式、Application模式。

在这里插入图片描述

2.Flink集群部署

利用Flink部署包部署的集群是独立于第三方资源管理器的。

集群规格

hb1hb2hb3
jobmanager、taskmanagertaskmanagertaskmanager

2.1集群配置

  1. 解压
[jiang@hb1 ~]$ tar -zxvf flink-1.17.0-bin-scala_2.12.tgz /opt/module/
  1. 修改conf/flink-conf.yaml
# JobManager节点地址.
jobmanager.rpc.address: hb1
jobmanager.bind-host: 0.0.0.0
rest.address: hb1
rest.bind-address: 0.0.0.0
# TaskManager节点地址.需要配置为当前机器名
taskmanager.bind-host: 0.0.0.0
# 修改成taskmanager的主机地址,例如hb2节点改成hb2
taskmanager.host: hb1
  1. 配置master文件conf/masters
hb1
  1. 配置conf/workers
hb1
hb2
hb3
  1. 启动flink集群
[jiang@hb1 flink-1.17.0]$ bin/start-cluster.sh
Starting cluster.
Starting standalonesession daemon on host hb1.
Starting taskexecutor daemon on host hb1.
Starting taskexecutor daemon on host hb2.
Starting taskexecutor daemon on host hb3.
[jiang@hb1 flink-1.17.0]$ jpsall
-------hb1---------
40101 StandaloneSessionClusterEntrypoint
40693 Jps
40473 TaskManagerRunner
-------hb2---------
27794 TaskManagerRunner
27980 Jps
-------hb3---------
45718 TaskManagerRunner
45878 Jps
[jiang@hb1 flink-1.17.0]$
  1. Dashboard访问

在这里插入图片描述

可以看到可用的slot是3,3个taskmanager每个taskmanager提供一个slot。

slot参数可以修改 taskmanager.numberOfTaskSlots

2.2作业提交测试

1.准备Flink执行jar包。(后续会从0-1编写)

bin/flink run -m hb1:8081 -d -c com.test.SocketApp Flink_Code-1.0-SNAPSHOT.jar

-m 指定集群

-c 指定主类

-d 分离模式,客户端提交完成后断开

执行日志

在这里插入图片描述

2.dashboard观察作业执行情况

在这里插入图片描述

使用flink部署包部署的集群是standalone模式,提交作业是会话模式。

3.作业部署模式

3.1会话模式

Session Mode

在这里插入图片描述

执行流程:

  1. 启动一个Flink会话集群(一般利用standalone或yarn资源管理器)bin/start-cluster.sh在独立部署模式下,bin/flink run -m yarn-cluster -d在Yarn资源管理器上
  2. 客户端将作业的Jar和依赖上传到集群的Jobmanager
  3. jobmanager接收到作业后向资源管理器申请作业运行所需的资源Slot
  4. Taskmanager提供slot来运行作业
  5. 作业运行完成后slot资源会释放,但是taskmanager和jobmanager进行继续运行不会停止

优缺点:

3.2单作业模式

Per-job Mode

单作业模式是为了解决会话模式资源共享、资源抢占的。

集群生命周期:一个作业,一个集群。每提交一次作业,Flink会为其专门启动一个集群,当作业运行执行完成时,整个集群的资源会被释放。

资源隔离:完美隔离,每个作业拥有独立的JobManager和TaskManager,作业之间不会相互受到干扰。

在这里插入图片描述

注意:图中有很多组件(AppMaster、Container等)并未绘制,只是为了描述单作业模式大概的流程,注意区分。

执行流程:

  1. 客户端提交作业,bin/flink run -m yarn-cluster -d 在yarn上,yarn资源调度管理器会识别这是一个per-job模式
  2. 资源管理器首先会分配容器启动一个该作业专属的jobmanager
  3. 该jobmanager与client通信,接收客户端提交的作业(业务逻辑以及依赖)
  4. 通过解析客户端提交的作业,得到所需的资源后再向资源管理器申请资源所需的taskmanager(slot资源)
  5. 资源管理器分配作业所需资源并启动taskmanager
  6. jobmanager再将作业执行的操作分发给taskmanager进行处理
  7. 作业运行完成后,taskmanager和jobmanager资源释放

优缺点:

  • 优点
    • 优秀的资源隔离,作业之间互不干扰,一个作业失败不会影响到其他作业
    • 资源按需分配,每个作业能够获取到运行所需的资源,避免了资源竞争
  • 缺点
    • 集群启动开销大,每个作业启动独立的集群,启动延迟较高
    • 对资源管理器压力大,作业高峰时存在频繁的资源分配和资源销毁的动作,给资源管理器带来巨大的压力

使用场景:一般用于生产环境,有较高稳定性和资源隔离性的要求。

3.3应用模式

application Mode

集群生命周期:一个应用,一个集群。这里的应用通常指的是1个或多个作业组成的应用程序的jar包。集群是为这个应用jar专门启动,应用执行完成后,集群资源释放。

资源隔离:应用级别隔离。不同的应用运行环境是隔离的

与单作业模式和会话模式的核心区别:在会话和单作业模式下,main方法是在客户端执行的,然后由客户端下载作业依赖解析生成作业执行图(JobGraph)然后提交给JobManager。而应用模式客户端只需要将依赖和作业jar提交给jobmanager,由jobmanager解析生成作业执行图(JobGraph)。

执行流程:

  1. 客户端提交应用(指定Application mode)
  2. 资源管理器为应用启动专门的集群,首先启动Jobmanager
  3. 客户端将应用jar和所有依赖提交到该Jobmanager
  4. Jobmanager端执行:Jobmanager进程调用应用的main方法,生成JobGraph,意味着依赖和解析发生在集群内部,而非客户端。
  5. 集群执行该应用的所有作业
  6. 应用执行结束,集群资源释放

优缺点:

  • 优点
    • 解耦客户端,客户端只需要提交应用jar和依赖即可断开连接,极大的降低了客户端资源消耗和网络带宽的需求
    • 拥有单作业资源隔离的优点
  • 缺点
    • 如果同一个应用被多次提交,会启动多个独立的集群(后面说明)

使用场景:客户端资源有限制或者Rest API进行作业部署的场景。

4.Yarn运行模式

​ YARN上部署的过程是:客户端把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会向Yarn的NodeManager申请容器。在这些容器上,Flink会部署JobManager和TaskManager的实例,从而启动集群。Flink会根据运行在JobManger上的作业所需要的Slot数量动态分配TaskManager资源。

这个过程在3.2单作业模式模式的执行过程以及描述的比较清楚。

4.1相关配置

将Flink作业提交到Hadoop集群的Yarn资源管理运行,需要进行相关配置才能实现。

环境要求:hadoop

具体配置

1)添加Hadoop环境变量/etc/profile或~/.bash_profile

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CLASSPATH=`hadoop classpath`

2)启动hadoop集群

start-dfs.sh
start-yarn.sh

在这里插入图片描述

4.2 单作业模式提交

单作业模式提交依赖于第三方,本节利用Yarn资源管理器来进行单作业模式提交,从而运行Flink集群

  1. 提交命令
bin/flink run -m yarn-cluster -yqu default -ynm flink-socket-test -ys 2 -ytm 2048 -yjm 2048 -d -c com.test.SocketApp Flink_Code-1.0-SNAPSHOT.jar

参数解释:

  • -d 分离模式,任务提交完成之后,客户端断开

  • -m 指定提交模式yarn-cluster

  • -yq 指定提交yarn队列名称

  • -ynm 指定作业名称

  • -ys 指定作业taskmanager的slot数量

  • -ytm 指定taskmanager内存大小

  • -yjm指定jobmanager内存大小

2)在yarn界面观察是否提交上去

在这里插入图片描述

Name就是在命令提交的时候指定的-jnm

3)查看flink dashboard任务

在这里插入图片描述

从上图可以看到,总共有两个slot,但是作业里面只使用了1个slot,因为代码里面指定了并行度=1。后续会说明并行度的优先级。

4)取消作业或停止作业

#通过flink命令取消作业
bin/flink cancel  -t yarn-per-job -Dyarn.application.id=application_1762323629516_0002
#通过yarn的命令直接停止
yarn application -kill application_1762323629516_0002

当执行完命令后,该flink集群就会停止,资源释放归还给ResourceManager

4.3会话模式提交

​ 会话模式Session,在Flink集群部署章节中,作业提交测试就是会话模式,首先启动一个集群,再提交作业到该集群进行运行。但是yarn-Session与独立模式还是有所不同,yarn-session是向ResouorceManager申请容器,NodeManager创建容器后启动JobManager服务,等待客户端提交作业

1)启动yarn-session

bin/yarn-session.sh -d -nm session-name -qu default -tm 1024 -jm 1024 -s 2

参数解释:

  • -d 分离模式,如果你不想让Flink YARN客户端一直前台运行,可以使用这个参数,即使关掉当前对话窗口,YARN session也可以后台运行
  • -jm,配置jobmanager内存大小
  • -nm,配置yarn-session该集群的应用名称
  • -qu,指定提交队列名称
  • tm,指定taskmanager内存大小

Yarn-session模式会根据需要动态的分配taskmanager数量

2)提交作业

执行以下命令将该任务提交到已经开启的Yarn-Session中运行

bin/flink run  -d -c com.test.SocketApp Flink_Code-1.0-SNAPSHOT.jar

3)查看flink dashboard

一共提交了两个作业,共用当前session资源

在这里插入图片描述

客户端也可以查询jobmanager地址,提交的时候通过-m指定jobmanager进行作业提交,通过dashboard下jobmanager的configuration可以找到。

在这里插入图片描述

bin/flink run -m hb1 -d -c com.test.SocketApp Flink_Code-1.0-SNAPSHOT.jar

4.4 应用模式提交

应用模式提交跟单作业模式类似,只是传递参数不一样。

bin/flink run-application -t yarn-application -d -c com.test.SocketApp Flink_Code-1.0-SNAPSHOT.jar

参数解释

  • -d 分离模式
  • -c 指定运行主类
  • -t 指定部署目标模式 yarn-application

查看yarn dashboard

在这里插入图片描述

应用模型运行时不依赖于客户端解析作业的逻辑执行图,而是jobmanager运行main进行解析,那么客户端的作用往往就是上传依赖和作业的jar包,在flink提交的设计中,在指定目标运行jar时,可以直接指定hdfs路径,从而减轻客户端上传作业jar包的过程。

1)上传Jar到HDFS路径

#创建flink依赖存储路径
[jiang@hb1 flink-1.17.0]$ hdfs dfs -mkdir -p /flink/remote_lib
[jiang@hb1 flink-1.17.0]$ hdfs dfs -put lib/ /flink/remote_lib
[jiang@hb1 flink-1.17.0]$ hdfs dfs -put plugins/ /flink/remote_lib
#创建运行jar存储路径
[jiang@hb1 flink-1.17.0]$ hdfs dfs -mkdir -p /flink/jars
[jiang@hb1 flink-1.17.0]$ hdfs dfs -put Flink_Code-1.0-SNAPSHOT.jar /flink/jars

2)提交作业

bin/flink run-application -t yarn-application -Dyarn.provided.lib.dirs="hdfs://hb1:9000/flink/remote_lib" -c com.test.SocketApp   hdfs://hb1:9000/flink/jars/Flink_Code-1.0-SNAPSHOT.jar

这种方式就比较轻量级了。

日志如下:

[jiang@hb1 flink-1.17.0]$ bin/flink run-application -t yarn-application -Dyarn.provided.lib.dirs="hdfs://hb1:9000/flink/remote_lib" -c com.test.SocketApp   hdfs://hb1:9000/flink/jars/Flink_Code-1.0-SNAPSHOT.jar
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/flink-1.17.0/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop-2.7.6/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
2025-11-05 15:58:53,567 INFO  org.apache.flink.yarn.cli.FlinkYarnSessionCli                [] - Found Yarn properties file under /tmp/.yarn-properties-jiang.
2025-11-05 15:58:53,567 INFO  org.apache.flink.yarn.cli.FlinkYarnSessionCli                [] - Found Yarn properties file under /tmp/.yarn-properties-jiang.
2025-11-05 15:58:53,778 WARN  org.apache.flink.yarn.configuration.YarnLogConfigUtil        [] - The configuration directory ('/opt/module/flink-1.17.0/conf') already contains a LOG4J config file.If you want to use logback, then please delete or rename the log configuration file.
2025-11-05 15:58:53,884 INFO  org.apache.hadoop.yarn.client.RMProxy                        [] - Connecting to ResourceManager at hb1/192.168.100.131:8032
2025-11-05 15:58:54,066 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - No path for the flink jar passed. Using the location of class org.apache.flink.yarn.YarnClusterDescriptor to locate the jar
2025-11-05 15:58:54,187 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - The configured JobManager memory is 1600 MB. YARN will allocate 2048 MB to make up an integer multiple of its minimum allocation memory (1024 MB, configured via 'yarn.scheduler.minimum-allocation-mb'). The extra 448 MB may not be used by Flink.
2025-11-05 15:58:54,187 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - The configured TaskManager memory is 1728 MB. YARN will allocate 2048 MB to make up an integer multiple of its minimum allocation memory (1024 MB, configured via 'yarn.scheduler.minimum-allocation-mb'). The extra 320 MB may not be used by Flink.
2025-11-05 15:58:54,187 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - Cluster specification: ClusterSpecification{masterMemoryMB=1600, taskManagerMemoryMB=1728, slotsPerTaskManager=1}
2025-11-05 15:58:55,070 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - Cannot use kerberos delegation token manager, no valid kerberos credentials provided.
2025-11-05 15:58:55,081 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - Submitting application master application_1762327641882_0005
2025-11-05 15:58:55,174 INFO  org.apache.hadoop.yarn.client.api.impl.YarnClientImpl        [] - Submitted application application_1762327641882_0005
2025-11-05 15:58:55,174 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - Waiting for the cluster to be allocated
2025-11-05 15:58:55,182 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - Deploying cluster, current state ACCEPTED
2025-11-05 15:59:06,307 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - YARN application has been deployed successfully.
2025-11-05 15:59:06,308 INFO  org.apache.flink.yarn.YarnClusterDescriptor                  [] - Found Web Interface hb3:41495 of application 'application_1762327641882_0005'.
[jiang@hb1 flink-1.17.0]$

以上是个人理解,如有问题可沟通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/982966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年下半年保温柜工厂Top 5推荐榜单与专业选择指南

摘要 2025年下半年,保温柜行业随着餐饮和冷链需求的增长持续发展,保温柜工厂在技术创新和产品质量上竞争激烈。本文基于行业调研和用户反馈,整理出一份推荐前五的保温柜工厂榜单,排名不分先后,旨在为用户提供参考…

2025年下半年徐州旅游租车/包车/商务车出租公司口碑排行前十指南

2025年下半年,旅游租车行业随着旅游市场的复苏和数字化升级,呈现出快速增长趋势。本文提供一份推荐前十的旅游租车公司榜单,基于行业数据、用户口碑和服务案例综合评估,旨在帮助用户选择合适的服务商。榜单排名仅为…

2025年下半年保冷柜生产厂家综合推荐指南:五大优质供应商深度解析

摘要 随着冷链物流行业的快速发展,2025年下半年保冷柜市场需求持续增长,各类生产厂家竞争日益激烈。本文基于行业调研数据,为您推荐五家值得关注的保冷柜生产厂家,排名不分先后,仅供采购参考。特别说明:本推荐榜…

2025年高口碑应急启动电源公司推荐榜单

在当前的市场环境中,选择靠谱的高倍率应急启动电源供应商至关重要。2025年的榜单汇聚了众多知名企业,涵盖了从技术研发到消费者体验的各个方面。这些公司不仅具备先进的生产设备,还拥有严谨的质量管理体系,确保了产…

2025年重庆拓展训练公司权威推荐榜单:团建‌/周边拓展好去处‌/适合团建的地方‌源头公司精选

在重庆,专业的拓展训练正成为企业激活团队潜能、提升组织效能的战略投资。 在当今竞争激烈的商业环境中,企业越来越重视通过专业的团队建设活动来提升员工凝聚力与组织活力。重庆作为西南地区的重要经济中心,企业对…

2025年景观喷泉厂家权威推荐榜单:波光喷泉/人工湖喷泉/水池喷泉源头厂家精选

在城乡环境美化与文旅产业蓬勃发展的背景下,景观喷泉作为融合艺术、技术与生态的公共艺术品,已成为提升城市形象、营造商业氛围与优化居住环境的重要元素。一个成功的喷泉项目,不仅依赖精妙的设计,更取决于施工厂家…

2025年下半年冷藏柜工厂综合推荐指南:十大优质供应商盘点

摘要 2025年冷藏柜行业迎来新一轮技术升级,节能环保、智能温控成为市场主流趋势。本文基于市场调研和用户反馈,整理出十家值得关注的冷藏柜供应商,为餐饮、商超、医疗等行业的采购决策提供参考。排名不分先后,仅供…

2025年防爆粉尘处理与水泵房噪音治理五大靠谱环保公司推荐,

在工业生产与城市生活中,防爆粉尘处理与水泵房噪音治理是企业和社区绕不开的环保难题——粉尘泄漏可能引发安全事故,水泵房噪音超标会招致居民投诉、环保处罚。面对市场上良莠不齐的环保服务商,如何找到技术可靠、效…

2025年杭州商务楼租赁机构排名:商务楼租赁在租信息

本榜单依托杭州写字楼租赁市场全维度调研与企业真实入驻口碑,深度筛选出五家标杆机构,为企业选址提供客观依据,助力精准匹配适配的商务空间伙伴。 TOP1 推荐:杭州坤和中心经营管理有限公司 推荐指数:★★★★★ 口…

别墅防水防潮五大品牌深度解析:左工防潮领衔结构性防护新标杆

高端别墅的居住品质,往往被地下室返潮、墙体发霉、墙角渗漏等隐蔽问题所侵蚀。选择技术过硬、服务可靠的防水防潮品牌,是守护别墅价值与居住健康的关键。本文聚焦五大主流品牌,以左工防潮为核心分析对象,从核心特点…

2025年无屑倒角机厂家权威推荐榜单:工业倒角机‌/倒角机‌/无尘倒角机‌源头厂家精选

随着制造业向自动化、精密化和环保化方向深度转型,无屑倒角机作为提升零部件加工质量、实现清洁生产的关键装备,其市场需求持续攀升。 在制造业智能化升级的推动下,全自动无屑切割倒角一体机市场正迎来高速发展。根…

医疗数字化供应链服务平台(MDSCT)——构建智慧医疗供应链新基座

在医疗健康产业高速发展的今天,供应链管理的效率与透明度,已成为影响医疗机构运营、医药企业竞争力乃至国家医改成效的关键因素。尤其在“带量采购”政策全面落地、医疗器械与药品流通环节利润空间被大幅压缩的背景下…

Python实现公历转农历

Python实现公历转农历Python有一些公历转农历的库,但是转出来的年份都是二零二四、二零二五这样的数字,我希望转成甲子、丙申这种天干地支形式,正好发现万象拼音的shijian.lua脚本里面有类似的功能,参照它实现了py…

膜结构汽车棚哪家更耐用实惠?实力厂家选购指南

膜结构汽车棚的“耐用”与“实惠”需结合材料品质、结构工艺、服务体系及价格成本综合评判。本文通过梳理行业核心评估标准,对比2-3家真实实力厂家,重点解析高性价比方案,为公共停车区域建设提供参考。 一、膜结构汽…

MySQL中的多字段IN

在工作学习中,我们有时会见到类似这样的sql: SELECT * FROM tbl_user tbu WHERE (tbu.serial, tbu.serial_sub) IN ((SN001, 001), (SN002, 002))这就是多字段IN。 对于单字段IN,稍微熟悉SQL语法的朋友应该都清楚。…

实力强的迪拜物流专线公司TOP5权威推荐:甄选货代助力中东贸

中东跨境电商市场规模年增速超30%,但迪拜物流专线因航班不稳定、清关复杂、末端派送混乱等问题,导致超40%的客户遭遇交付延误,隐性成本增加25%。企业常陷入三难困境:头程航班延误致库存积压、清关文件错误拉长周期…

2025年如何选择货架品牌前十排名:甘肃三阳仓储设备有限公司领衔指南

摘要 货架行业随着物流和仓储需求的增长持续发展,2025年预计市场规模将进一步扩大,智能化和定制化成为主流趋势。本文基于行业数据和用户反馈,整理出如何选择货架品牌的前十排名榜单,旨在为企业采购提供参考。榜单…

2025年北京商事刑事知名律师服务综合推荐指南

摘要 随着北京商事经济活动日益活跃,商事刑事法律服务需求呈现显著增长趋势。2025年商事刑事领域面临新型经济犯罪、数据合规、跨境贸易刑事风险等挑战,专业律师服务成为企业健康发展的重要保障。本文基于市场调研和…

基于复合剩余问题的Paillier公钥密码体制

Paillier公钥密码体制是基于复合剩余问题构建的概率性公钥加密系统,具有同态特性和良好的安全性质 一、密钥生成 步骤:选择两个大素数 \(p\) 和 \(q\),计算 \(n = p \times q\) 计算卡迈克尔函数:\(\lambda(n) = \…

2025年北京青少年身心健康服务推荐排行榜发布!张博士非药物干预法获家长热捧

摘要: 2025年北京青少年心理问题发生率较5年前上升40%!😱 众多家长陷入”选机构难、怕药物副作用、效果难持续”三大困境。本文结合最新调研数据及真实案例,揭秘中科心桥北京心理医学研究院张海峰博士的非药物干预…