切换主题
3.3.3 实时开发
实时开发面向持续流入的数据。与离线开发最大的差别是:实时任务不编排 DAG,一个任务就是一个独立的 Flink 作业;任务必须「上线」后才能「启动」,启动后生成实时实例并提交作业。
| 对比项 | 离线开发 | 实时开发 |
|---|---|---|
| 组织方式 | 工作流 + 工作流内的多个节点(DAG) | 单个实时任务,不编排节点 |
| 页面形态 | 画布式编辑器 | 列表 + 表单弹窗 |
| 发布说法 | 上线 / 下线 | 上线 / 下线 |
| 运行说法 | 运行(生成工作流实例) | 启动(生成实时实例并提交作业) |
| 结果查看 | 工作流实例 / 任务实例 | 实时任务实例 |
左右滑动查看完整表格
3.3.3.1 实时任务定义列表
从左侧菜单进入「实时开发」,页面分为左侧目录树、顶部页签与右侧列表。目录树用于按目录组织任务,顶部可在「任务定义」与「任务实例」之间切换。
| 区域 | 内容 | 说明 |
|---|---|---|
| 目录 | 全部任务 / 自定义目录 / 新建 | 目录后的数字为该目录下的任务数,点击目录可筛选 |
| 页签 | 任务定义 / 任务实例 | 任务定义看配置与操作,任务实例看每次启动的运行记录 |
| 筛选 | 任务名称、类型、状态 | 类型可选 SQL / JAR,状态可选已上线 / 已下线 |
| 操作按钮 | 批量复制、批量删除、新建任务 | 对勾选行批量处理,或新建单个任务 |
左右滑动查看完整表格
列表每行是一个实时任务,任务名称下方标注所属目录与创建人。行尾提供四个操作入口:
| 列 / 操作 | 含义 |
|---|---|
| 任务 ID | 系统分配的任务编号 |
| 任务名称 | 任务标识,下方小字为「目录 · 创建人」 |
| 类型 | SQL 或 JAR,分别对应 Flink SQL 作业与 Flink JAR 作业 |
| 状态 | 「已上线」可启动;「已下线」不能启动 |
| 创建时间 / 更新时间 | 时间信息,页面以 UTC 时间带时区显示 |
| 编辑 | 打开「编辑实时任务」弹窗,修改任务配置与代码 |
| 启动 | 提交一次运行;任务未上线时会被拦截 |
| 上线 / 下线 | 切换任务的上线状态 |
| 更多 | 收纳该任务的其他操作入口 |
左右滑动查看完整表格
3.3.3.2 新建实时任务
点击右上角「新建任务」,弹出「新建实时任务」窗口。窗口内容随「作业类型」变化:选择 Flink JAR 时填写 JAR 作业参数,选择 Flink SQL 时填写 SQL 与执行模式。
| 分区 | 字段 | 说明 |
|---|---|---|
| 基础信息 | 任务名称 | 必填。以小写字母开头,仅支持小写字母、数字与下划线,长度 3–64 位 |
| 所属目录 | 必填。任务归属目录,决定在左侧目录树中的位置 | |
| 作业类型 | Flink JAR 或 Flink SQL | |
| 部署模式 | 默认 Application(独立部署) | |
| K8s 数据源 | 必填。作业提交使用的 K8s 集群数据源 | |
| 命名空间 | 必填。作业在 K8s 中的命名空间 | |
| 运行内容 | 对象存储数据源 | 默认取资源空间绑定的存储 |
| Flink 根目录 | 必填。形如 s3://datasphere-test/flink/ | |
| JAR 资源 | 必填。从当前存储中选择 JAR 文件,可跳转「资源中心」上传 | |
| Main Class | 必填。JAR 的入口类 | |
| 程序参数 / 第三方 JAR | 多个参数以空格分隔;多个路径以分号分隔 | |
| 挂载文件 | 只读挂载到 JobManager 与 TaskManager,单文件上限 64 KiB,合计 128 KiB,最多 8 个 | |
| 资源配置 | JobManager / TaskManager 的 CPU 与内存 | 内存必填,默认 1g;CPU 默认 1.0 |
| 每 TaskManager 插槽 | 默认 2 | |
| 状态与升级 | Checkpoint 间隔 / 保留数 | 默认 10m、保留 3 个 |
| 高可用类型 | 默认 kubernetes | |
| 取消任务后的 Checkpoint | 默认「取消任务后保留」 | |
| 升级模式 | 默认 stateless | |
| History Server | 可选。选择后可回看任务归档日志 | |
| 固定并行度 / 自定义 Flink 参数 | 固定并行度默认 1;自定义参数按 Flink 配置项填写 |
左右滑动查看完整表格
JAR 作业会覆盖平台的 Checkpoint 设置 JAR 程序调用 enableCheckpointing 或设置 CheckpointConfig 时,会覆盖平台默认值。填写「程序参数」中的 checkpoint 相关配置时,需与「Checkpoint 间隔」核对,以 Flink 实际运行配置为准。 |
3.3.3.3 编辑实时任务
在任务定义列表点击「编辑」,弹出「编辑实时任务」窗口。与新建相比,这里多出「Flink Session」与「SQL 内容」,用于修改已存在任务的代码与运行参数。
| 字段 | 说明 |
|---|---|
| 任务名称 | 可修改,命名规则与新建一致 |
| 所属目录 | 任务归属目录 |
| 作业类型 | Flink SQL 或 Flink JAR |
| Flink Session | SQL 作业使用的 Session 集群 |
| 执行模式 | STREAMING 等;选择后会修改 SQL 中的执行模式 |
| SQL 内容 | 必填。作业的 Flink SQL,可包含建表语句与查询语句 |
| 版本说明 | 本次修改的说明,便于日后回溯 |
左右滑动查看完整表格
修改并保存后需要重新上线 已上线的任务修改保存后,需要重新「上线」,新配置才会在下次启动时生效。正在运行的实例不会因为保存而自动变更;如需按新逻辑运行,应在任务实例中停止后重新启动。 |
3.3.3.4 上线与启动
实时任务必须先上线再启动,这是与离线开发相比最需要记住的一条规则。
未上线时点「启动」会被拦截 对一个「已下线」的任务点「启动」,系统提示「任务已下线,请先上线再启动」,不会提交作业。正确顺序是:先点「上线」,再点「启动」。 |
任务上线后再次点「启动」,弹出「启动实时任务」窗口,用于选择本次启动的恢复方式。
| 选项 | 说明 |
|---|---|
| 恢复方式 | 三选一:Checkpoint / Savepoint / 全新启动 |
| Checkpoint 恢复点 | 列出可用的 Checkpoint;没有时显示「没有可用恢复点」,可点「刷新 Checkpoint」 |
| Savepoint 恢复点 | 列出可用的 Savepoint;没有时显示「没有可用恢复点」,可点「刷新 Savepoint」 |
| 全新启动 | 不装载旧的 Flink 状态;页面说明:不会清空 Kafka 位点或数仓数据 |
左右滑动查看完整表格
选择「全新启动」时不需要恢复点;选择 Checkpoint 或 Savepoint 时,必须先在对应列表中选中一个恢复点,否则无法提交。
3.3.3.5 停止与重启
任务的停止与重启都在「任务实例」页完成,而不是在任务定义列表。任务实例页的「操作」列提供「停止」与「日志」两个入口。
- 进入「实时开发 → 任务实例」,按任务名称或 Job ID 找到要停止的实例。
- 点击该行「停止」,系统终止对应的 Flink 作业,实例状态变为「已停止」。
- 需要重启时回到「任务定义」,重新点「启动」,并在弹窗中选择恢复方式。
重启不会自动延续状态 重启时如果选择「全新启动」,不会装载旧状态。若希望从上次进度继续,需在启动弹窗中选择 Checkpoint 或 Savepoint,并确认列表中存在可用恢复点。 |
3.3.3.6 实时任务实例
「实时开发 → 任务实例」页签列出每次启动产生的实时实例,可按任务名称或 Job ID 查询。
| 列 / 操作 | 含义 |
|---|---|
| 实例 ID | 实时实例编号 |
| 任务名称 | 实例名,由任务名称加实例编号组成 |
| Job ID | Flink 作业 ID,排查问题时用于在 Flink 侧定位作业 |
| 实例 | 实例在集群中的名称 |
| 状态 | 例如「已停止」 |
| 启动时间 | 实例启动时间,以 UTC 时区显示 |
| 操作:停止 | 停止该实例对应的作业 |
| 操作:日志 | 查看该实例的运行日志 |
左右滑动查看完整表格
3.3.3.7 实时任务管理
除编辑与启停外,实时任务的日常管理还包括状态核对与批量处理:
| 操作 | 位置 | 说明 |
|---|---|---|
| 查看任务配置 | 任务定义 > 编辑 | 以弹窗形式查看并修改全部配置项 |
| 切换上线状态 | 任务定义 > 上线 / 下线 | 下线后不能启动;上线后才能启动 |
| 复制任务 | 任务定义 > 勾选行 > 批量复制 | 以已有任务为模板产生新任务,适合同构作业批量搭建 |
| 删除任务 | 任务定义 > 勾选行 > 批量删除 | 删除前确认任务已停止,避免作业失去管理入口 |
| 查看运行日志 | 任务实例 > 日志 | 查看作业提交与运行输出,用于定位启动失败 |
左右滑动查看完整表格
判断实时任务是否正常运行 三个观察点:任务定义列表的「状态」为「已上线」;任务实例列表存在状态为运行中的实例;实例的「日志」中无报错输出。三者同时满足,才说明作业在正常运行。 |