zoukankan      html  css  js  c++  java
  • Flink的JobManager启动(源码分析)

    都知道Flink中的角色分为Jobmanager,TaskManger

    在启动脚本里面已经找到了jobmanager的启动类org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint(local模式更简单直接在Driver端的env.exection()直接启动了,有兴趣可以研究一下)

    来看一下StandaloneSessionClusterEntrypoint启动类的一些重要的方法

    在main方法中会调用抽象类 ClusterEntrypoint.java的

    在这里启动了集群

    在这个方法runCluster()中比较重要

    其中1处初始化了一些ClusterEntrypoint.java中的一些服务像什么HA,blob,heartbeat,metricRegistry这些

    还是主要看一下2处create()方法中

    其中包括了一些创建以及启动ResourceManager(有用于请求solt的RPC,初始化所有solt到resourceManager的soltManager的RPC(这个会在jobmanager接收到jobGraph后调用),TM心跳等),启动web服务

    来看一下ResourceManager的初始化

     

    1处创建的services里面会包含一个soltManager但是里面并没有solt,solt并没有初始化

    主要看下2处,创建了一个resourceManager对象这个抽象类实现了接口

    这个接口下的几个重要的RPC方法具体实现

    这里可以看到是具体向resourceManager请求solt的RPC,另外一个

    这个RPC会发送信息到resourceManager包括像taskManagaer有多少可分配的solt,哪些已分配的solt,solt的状态等

    然后在create()方法中就将这个resourceManager的PRC服务启动起来了

    起来以后

    主要看一下这里

    创建了一个Dispatcher调度对象

    看下Dispatcher是用来干嘛的(StandaloneDispatcher都是调用了父类的初始化方法super()创建一个Dispatcher.java对象)

    来看一下Dispatcher实现了什么接口(ResourceManager同理)

    看一下实现的这个接口,当然还有一些其他的

    具体实现

    看到这里就应该很熟悉了

    他实现了submitJob()接口用于启动一个RPC,接受参数可以看到接受到一个JobGraph,这就意味着这和job任务启动有关,后面随缘更新到job启动Graph转换会提到

    回到前面的Dispatcher.start()将传入的rpcService启动起来了,等待接受来自Driver端提交上来的JobGraph差不多启动完成了

    这里jobmanager其实还不完整,负责一些服务没有起来,要等到Driver端的Jobgraph提交以后才会起来,像Coordinator后面随缘到job提交会详细的说一下

  • 相关阅读:
    关于禁用发布可能出现的问题处理
    SQL Server数据库的整理优化的基本过程(一)
    分享SQL2005分区实现教程
    Oracle数据库的测试用户Scott的密码为什么是Tiger?
    这就是传说中的搜狗浏览器2.0
    IE6,IE7下双倍边距续
    IE7下fload:left造成双倍边距BUG
    as2和as3之间交互
    倒计时效果
    js拖动层效果
  • 原文地址:https://www.cnblogs.com/ljygz/p/11405572.html
Copyright © 2011-2022 走看看