flink standalone部署模式

standalone模式可以在单台机器以不同进程方式启动,也可以以多机器分布式方式启动。

任务的提交模式有三种:application mode、session model、per-job mode(1.4x版本后过时)。

注意区分任务的提交模式与集群的部署模式区别。

以flink-1.18.1版本实验。

1.单台机器的session模式的standalone部署集群方式

此种方式启动的flink集群注定任务的提交模式是session模式。

1.1.启动单台机器上session模式的standalone集群

复制代码
./bin/start-cluster.sh

默认会产生如下两个进程,单台机器,不同进程:

1.2执行一个计算任务

复制代码
./bin/flink run ./examples/streaming/TopSpeedWindowing.jar

./bin/flink run ./examples/streaming/TopSpeedWindowing.jar执行后,会有进程:

1.3关闭standalone集群

复制代码
./bin/stop-cluster.sh

2.单台机器的standalone模式,以application mode提交任务

2.1启动一个taskmanager

复制代码
./bin/taskmanager.sh start

多次执行上面的命令会启动多个taskmanager。

2.2启动任务

复制代码
$ cp ./examples/streaming/TopSpeedWindowing.jar lib/
$ ./bin/standalone-job.sh start --job-classname org.apache.flink.streaming.examples.windowing.TopSpeedWindowing

localhost:8081 查看任务,此时单台机器上只有一个taskmanager进程和一个StandaloneApplicationClusterEntryPoint应用进程

除了将自己打包的应用程序放在lib中,还有另外一种方式提交任务未调试通过:


复制代码
$ ./bin/standalone-job.sh start -D user.artifacts.base-dir=/tmp/flink-artifacts --jars local:///path/to/TopSpeedWindowing.jar

我的理解:如果调试通过,user.artifacts.base-dir 可以用来存放hadoop、hive相关的依赖。local:///path/to目录可以存放每次发版本的最新应用jar。

报错:"No JAR found on classpath. Please provide a JAR explicitly"


2.3关闭taskmanager和提交的任务

复制代码
$ ./bin/taskmanager.sh stop
$ ./bin/standalone-job.sh stop
Standalone Cluster参考

在 Standalone 模式下,以下 jar 将被识别为用户 jar 并包含在用户类路径中:

Session 模式:启动命令中指定的 JAR 文件。

Application 模式:启动命令中指定的 JAR 文件和 Flink 的 usrlib 文件夹中的所有 JAR 文件。

个人理解:可以把hadoop、hive的jar放到usrlib中。

工作目录存储内容涵盖:
  1. BlobServer 和 BlobCache 存储的 Blob
  2. 如果启用了 state.backend.local-recovery,则为本地状态
  3. RocksDB 的工作目录

standalone部署要求:

假设我们使用flink作为计算引擎,且没有hadoop集群的情况下,我们要如何部署与提交任务呢?

1.flink部署采用standalone模式部署

2.提交任务采用application模式提交,这种方式保证任务间互不干扰

3.设定工作目录;设定本地状态;设定资源id(便于恢复task任务)

复制代码
process.working-dir: /path/to/working/dir/base
state.backend.local-recovery: true
taskmanager.resource-id: TaskManager_1 

4.设定状态后端存储为rockdb(避免file状态对内存依赖的问题)

bash 复制代码
state.backend: rocksdb
state.checkpoints.dir: file:///mnt/flink/checkpoints
state.savepoints.dir: file:///mnt/flink/savepoints

5.配置taskmanager.memory.flink.size和jobmanager.memory.flink.size

配置 Flink 总内存更适合独立部署,因为您需要声明分配给 Flink 本身的内存量。Flink 总内存分为 JVM 堆内存和堆外内存。【参考】

为什么使用flink框架来编写分布式计算程序?

1.轻松编写并发程序

支持多机器、多进程、多线程的粒度控制

2.编写的程序有状态

类似断点续传的原理。重启任务后,自动恢复应用状态,例如正在统计某一个商品当前uv为10w,计算任务重启后,会在10w的基础上累加。

3.背压感知

自动根据下游的处理能力调节计算频率

4.各种处理指标Grafana一览无余

个人理解:

1.bin/start-cluster.sh 启动的session模式的standalone集群从生成的日志文件standalonesession也可以推测

2.conf/workers配置项对./bin/start-cluster.sh命令启动的session模式的standalone有效,对./bin/taskmanager.sh只启动executor计算节点无效,此计算节点用于后续提交application模式应用任务使用

3.只有session模式的standalone集群有HA?

4.为了实现standalone的本地文件目录恢复,需要配置

复制代码
process.working-dir: /path/to/working/dir/base
state.backend.local-recovery: true
taskmanager.resource-id: TaskManager_1 

参考文档:

deployment-standalone-overview

deployment-standalone-working-dir

相关推荐
具身AGI37 分钟前
ARR还是交付量,物理AI 国产 的三种收入口径
大数据·人工智能
计算机源码社38 分钟前
基于大数据技术的城市空气质量时序趋势与站点特征分析系统 面向监测站点的城市空气污染时空异质性分析与可视化系统
大数据·机器学习·数据挖掘·数据分析·毕业设计·课程设计·数据可视化
AC赳赳老秦1 小时前
OpenClaw 数据引用规范自动生成:为公开数据构建可信来源标注与标准引用体系
大数据·开发语言·汇编·数据库·人工智能·deepseek·openclaw
乐迪信息1 小时前
AI防爆摄像机,监测港口船舶航行偏航隐患
大数据·人工智能·深度学习·算法·计算机视觉
西索斯coding2 小时前
grok-4.7 调用一直 429 怎么办?不是额度用完——是 RPM 和 TPM 双桶限流,附响应头读取代码和退避策略
大数据·人工智能·机器学习·ai
QYR-分析3 小时前
生物识别装备升级:全球全掌掌纹扫描仪市场格局与发展前景解析
大数据
蜗牛互联网3 小时前
从Barclays扩大Claude部署看受监管软件工程的责任重分配
java·大数据·人工智能·后端·软件工程
JieDavid3 小时前
奇智创达知识产权管理系统期限监控模块实操,告别人工期限疏漏,实现管理闭环!
大数据·运维·人工智能·经验分享·重构
lisw054 小时前
大数据和开放科学时代的信息计量学:信息科学与数据科学之间的桥梁
大数据·开放科学·信息计量学
starzy19904 小时前
Flink Akka底层原理深度剖析:从ActorSystem到Dispatcher调度器的底层实现
大数据·flink