• flink集群与资源@k8s源码分析-运行时


    1 运行时

    运行时提供了Flink作业运行过程依赖的基础执行环境,包含Dispatcher、ResourceManager、JobManager和TaskManager等核心组件,本节分析资源相关运行时组件构建和启动。

    flink没有使用spring,缺少ioc的构建过程相当复杂,所有依赖手动关联和置入,为了共享组件,flink使用了很多中间持有共享组件的中间对象。

    2 场景

    3 构建和启动flink master组件

    部署集群通过flink kubeclient向k8s集群管理提交flink master的Deployment,触发flink master构建和启动

    上图是构建和启动的交互图,参看《构建作业管理器部署规格》的CmdJobManagerDecorator设置了初始容器脚本和参数,集群初始入口ClusterEntryPoint

    1. 容器初始执行kubernetes-jobmanager.sh

    ClusterEntryPoint设置为KubernetesSessionClusterEntrypoint

    2.
    KubernetesSessionClusterEntrypoint继承SessionClusterEntrypoint,只重新实现createDispatcherResourceManagerComponentFactory方法,设置ResourceManagerFactory为KubernetesResourceManagerFactory,就是说集群初始化逻辑与其他session集群区别不大

    3. 经过容错日志,插件文件系统初始化,进入ClusterEntrypoint的runCluster,该方法主要做两个事,initializeServices
    DispatcherResourceManagerComponent

    4. initializeServices构建基础服务,Rpc服务,Jmx服务,ha服务,blob服务,metics服务等,这些基础服务有些独立运行,有些业务组件使用,如,ha服务,rpc服务

    5.
    DispatcherResourceManagerComponent运行时组件,高可用组件的初始化/启动;同时也是持有者,用于后面关闭和清理,其中内置rest服务WebMonitorEndpoint,就是说,每个flink master支持外部rest独立访问

    4 构建和启动任务管理器

    构建和启动任务管理器是申请资源的一部分,按请求新worker的延申,类型分属于运行时一部分。

    1. createTaskManagerPod与10.2 新建作业管理组件类似,CmdTaskManagerDecorator,装饰器实现了pod装饰,装饰主容器,设置shell执行命令

    设置执行脚本
    KUBERNETES_TASK_MANAGER_SCRIPT_PATH= "kubernetes-jobmanager.sh"

    主入口
    KubernetesTaskExecutorRunner main方法

    2. 任务管理器启动比较简单,主要启动rpc服务和高可用组件,高可用触发9.5 注册任务管理器/报告资源

  • 相关阅读:
    激活函数与loss的梯度
    springboot+vue+nodejs企业公司财务员工工资管理系统java
    中小学数学卷子自动生成程序
    【PyTorch】深度学习实践之 用Softmax和CrossEntroyLoss解决多分类问题(Minst数据集)
    mysql log理解
    亚马逊暖风机CE认证UL报告办理周期费用
    Python中的迭代器、生成器和装饰器
    跨平台Markdown编辑软件Typora mac中文版功能介绍
    java基础-基础知识点
    一文了解微服务低代码实现方式
  • 原文地址:https://blog.csdn.net/szlhj/article/details/133066431