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.sizejobmanager.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

相关推荐
武子康13 小时前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天14 小时前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
武子康3 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康4 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库4 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟4 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长4 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计