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

背景信息

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

使用限制

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

注意事项

  • Session集群作为开发测试环境,请勿将Session集群用于正式生产环境。如果将Session集群用于正式生产环境,会有以下业务稳定性问题:
    • JobManager单点故障会对集群内的所有作业造成影响。
    • TaskManager单点故障会对在其上有task运行的相关作业造成影响。
    • 同一个TaskManager内部,不同Task之间如果没有进程隔离,则存在相互影响的潜在风险。
  • 如果Session集群为默认配置,则有以下建议:
    • 对于单并发的小作业,建议整个集群的作业总数不超过100个。
    • 对于复杂作业,建议单作业最大并发数不超过512,64个并发的中等规模作业单集群不多于32个。否则可能会出现心跳超时等问题影响集群稳定性。此时,您需要增大心跳间隔和心跳超时时间。
    • 如果您需要同时运行更多的任务,则需要增加Session集群的资源配置。

创建Session集群

  1. 登录实时计算控制台
  2. Flink全托管页签,单击目标工作空间操作列下的控制台
  3. 在左侧导航栏上,单击Session集群
  4. 单击创建Session集群
  5. 填写配置信息。
    创建Session集群
    参数解释如下表所示。
    模块配置项说明
    基础配置名称集群名称。
    状态设置当前集群的期望运行状态:
    • STOPPED:当集群配置完成后保持停止状态,同样会停止所有在运行中的作业。
    • RUNNING:当集群配置完成后保持运行状态。
    标签名您可以在标签选项中添加作业标签,便于在总览页面快速定位作业。
    标签值无。
    配置引擎版本当前作业使用的Flink的引擎版本。
    说明 Python API作业需要选择vvr-2.1.4-flink 1.11及以上版本。
    Flink重启策略配置该参数取值如下:
    • Failure Rate:基于失败率重启。

      选择该选项后,您还需要填写检测Failure Rate的时间间隔时间间隔内的最大失败次数每次重启时间间隔

    • Fixed Delay:固定间隔重启。

      选择该选项后,您还需要填写尝试重启的次数每次重启时间间隔

    • No Restarts:作业task失败不会重启。
    重要 如果您没有配置该参数,则按Apache Flink默认的重启策略,即当有Task失败时,如果没有开启Checkpoint,JobManager进程不会重启。如果开启了Checkpoint,则JobManager进程会重启。
    更多Flink配置在此设置更多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发生单点故障,影响面会很大。
    日志配置根日志等级日志级别从低到高的顺序如下:
    1. TRACE:比DEBUG更细粒度的信息。
    2. DEBUG:系统运行状态的信息。
    3. INFO:重要或者您感兴趣的信息。
    4. WARN:系统可能出现潜在错误的信息。
    5. ERROR:系统出现错误和异常的信息。
    类日志等级填写日志名和级别。
    输出模板日志模板,可以选择系统模板或自定义模板。
    说明 关于Flink与资源编排框架(例如Kubernetes、Yarn等)集成的相关选项详情,请参见Resource Orchestration Frameworks
  6. 单击创建Session集群
    Session集群创建完成后,您可以在部署界面或者作业调试界面选择此集群。