Session集群适用于非生产环境的开发测试环境,您可以使用Session集群模式部署或调试作业,提高作业JM(Job Manager)资源利用率和提高作业启动速度。

背景信息

Flink全托管支持Per-Job集群和Session集群两种集群模式。两种集群模式有以下区别:
  • Per-Job集群(默认):作业之间资源隔离,每个作业都需要一个独立的JM,因为小任务JM的资源利用率较低,因此适用于占用资源比较大或持续稳定运行的作业。
  • Session集群:多个作业可以复用相同的JM,可以提高JM资源利用率。但因为JM复用会使得作业间稳定性会相互影响,且Session集群无法提供单独作业的Metric和报警能力,因此适用于作业测试运行。
    说明
    • 每个项目空间可以配置多个Session集群,但只能选择一个Session集群开启SQL Preview 。该配置项的详细说明请参见本文参数解释中的设置为SQL Previews集群
    • 无论您是否使用Session集群,在创建Session集群时会消耗集群资源,其中消耗的资源和您创建集群时选择的资源配置有关。
    • VVR 3.0.4及以下版本的每个Session集群运行后,都会额外消耗0.5 CU的资源。

使用限制

Session集群有以下限制:
  • 不支持显示数据曲线。
  • 不支持监控告警功能。
  • 暂不支持开启自动调优功能。

注意事项

  • Session集群作为开发测试环境,请勿将Session集群用于正式生产环境。如果将Session集群用于正式生产环境,会有以下业务稳定性问题:
    • JobManager单点故障会对集群内的所有作业造成影响。
    • TaskManager单点故障会对在其上有task运行的相关作业造成影响。
    • 同一个TaskManager内部,不同Task之间如果没有进程隔离,则存在相互影响的潜在风险。
  • 运行作业时,不建议作业的部署目标为打开了SQL Preview开关的Session集群。因为后续产品引擎版本升级会导致无法再使用当前版本的Session集群调试,如果更换Session集群的版本,则会影响您线上作业的运行。
    Session集群如何打开SQL Preview开关如下图所示。SQL Preview
  • 如果Session集群为默认配置,则有以下建议:
    • 对于单并发的小作业,建议整个集群的作业总数不超过100个。
    • 对于复杂作业,建议单作业最大并发数不超过512,64个并发的中等规模作业单集群不多于32个。否则可能会出现心跳超时等问题影响集群稳定性。此时,您需要增大心跳间隔和心跳超时时间。
    • 如果您需要同时运行更多的任务,则需要增加Session集群的资源配置。

创建Session集群

  1. 登录实时计算控制台
  2. Flink全托管页签,单击目标工作空间操作列下的控制台
  3. 在左侧导航栏上,选择系统管理 > Session集群
  4. 在页面左上角,单击创建Session集群
  5. 填写配置信息。
    创建Session集群参数解释如下表所示。
    模块 配置项 说明
    基础配置 名称 集群名称。
    状态 设置当前集群的期望运行状态:
    • STOPPED:当集群配置完成后保持停止状态,同样会停止所有在运行中的作业。
    • RUNNING:当集群配置完成后保持运行状态。
    设置为SQL Previews集群 将此Session集群设置为SQL Preview查询的资源集群。详情请参见作业调试
    说明 每个项目空间只能有一个Session集群开启SQL Preview,开启此设置将取消之前为SQL Preview设置的Session集群。
    标签名 您可以在标签选项中添加作业标签,便于在总览页面快速定位作业。
    标签值 无。
    配置 引擎版本 当前作业使用的Flink的引擎版本。
    说明 Python API作业需要选择vvr-2.1.4-flink 1.11及以上版本。
    Flink重启策略配置 该参数取值如下:
    • No Restarts:不重启。
    • Fixed Delay:固定延迟。选择该选项后,您还需要填写尝试重启的次数和每次重启时间间隔。
    • Failure Rate:故障率。选择该选项后,您还需要填写检测故障率的时间间隔,时间间隔内的最大失败次数和每次重启时间间隔。
    说明 如果您没有配置该参数,则按Apache Flink默认的重启策略,即当有Task失败时,如果没有开启Checkpoint,JobManager进程不会重启。如果开启了Checkpoint,则JobManager进程会重启。
    其他配置 在此设置其他Flink配置。例如taskmanager.numberOfTaskSlots: 1
    资源配置 Task Managers数量 默认与并行度一致。
    JobManager CPU Cores 默认值为1。
    JobManager Memory 最小值为1 GiB,推荐值为2 GiB。单位建议使用GiB或MiB,例如,1024 MiB或1.5 GiB。
    JobManager推荐配置包含JobManager资源以及心跳相关参数。具体内容如下:
    • 由于JobManager上承载TaskManager心跳、作业Task序列化和资源调度等功能。因此建议JobManager资源不小于默认配置,请根据集群负载情况进行处理。
    • 为了集群稳定,避免JobManager主线程繁忙导致心跳超时。因此建议心跳间隔(heartbeat.interval)不小于10秒,同时心跳超时(heartbeat.timeout)不小于50秒。请根据TaskManager个数与作业量上涨情况而上调。
    TaskManager CPU Cores 默认值为2。
    TaskManager Memory 最小值为1 GiB,推荐值为8 GiB。单位建议使用GiB或MiB,例如,1024 MiB或1.5 GiB。
    TaskManager推荐配置包含单个TaskManager的Slot个数(taskmanager.numberOfTaskSlots)及TaskManager资源大小。具体内容如下:
    • 对于单并发小作业,建议单Slot的CPU内存比为1:4,使用的资源不小于1核2 GiB。
    • 对复杂作业,建议单Slot使用资源不小于1核4 GiB。在默认资源配置下,每个TaskManager可以配置2个Slot。
    • TaskManager资源不宜过小,也不宜过大,推荐默认资源配置并将Slot数目设为2。
      说明
      • 如果单个TaskManager资源过小,则可能影响其上作业的稳定性,并且由于其Slot数目不多,无法有效平摊TaskManager的开销,降低了资源的利用效率。
      • 如果单个TaskManager资源过大,则TaskManager上运行的作业数会很多,一旦TaskManager发生单点故障,影响面会很大。
    日志配置 Root Log Level TRACE、DEBUG、INFO、WARN和ERROR。
    Log Levels 填写日志名和级别。
    Logging Profile 日志模板,可以选择系统模板,也可以选择用户配置。
    说明 关于Flink与资源编排框架(例如Kubernetes、Yarn等)集成的相关选项详情,请参见Resource Orchestration Frameworks
  6. 单击创建Session集群
    Session集群创建完成后,您需要在Session集群列表页面,单击启动。等Session集群处于运行中时,您就可以在作业的部署目标中选择此集群。部署目标