Flink源码解析(三)TaskManager启动分析

1、Flink主节点TaskManager启动分析:

        TaskManager是Flink的worker节点,它负责Flink中本机slot资源的管理以及具体task的执行。
        TaskManager上的基本资源单位是slot,一个作业的task最终会部署在一个TM的slot上运行,TM会负责维护本地的slot资源列表,并来与FlinkMaster和JobManager通信。
        根据前面的启动分析:TaskManager的启动主类:TaskManagerRunner。

2、源码分析

代码执行的大致流程如下:

TaskManagerRunner.main()
    runTaskManagerSecurely(args, ResourceID.generate());
        # 加载配置
        Configuration configuration = loadConfiguration(args);
        # 启动 TaskManager
        runTaskManagerSecurely(configuration, resourceID);
            # 启动 TaskManager
            runTaskManager(configuration, resourceID, pluginManager);
                # 构建 TaskManagerRunner 实例
                taskManagerRunner = new TaskManagerRunner(...);
                    # 初始化一个线程池
                    this.executor = Executors.newScheduledThreadPool(....)
                    # 获取高可用模式
                    highAvailabilityServices = HighAvailabilityServicesUtils.createHighAvailabilityServices(...)
                    # 创建 RPC 服务
                    rpcService = createRpcService(configuration,
                    highAvailabilityServices);
                    # 创建心跳服务
                    heartbeatServices = HeartbeatServices.fromConfiguration(conf);
                    # 创建 BlobCacheService
                    blobCacheService = new BlobCacheService(....)
                    # 创建 TaskManager
                    taskManager = startTaskManager(.....)
                    # 初始化 TaskManagerServices
                    taskManagerServices = TaskManagerServices.fromConfiguration(...)
                    # 初始化 TaskEventDispatcher
                    taskEventDispatcher = new TaskEventDispatcher();
                    # 初始化 IOManagerASync
                    ioManager = new IOManagerAsync(...)
                    # 初始化 NettyShuffleEnvironment
                    shuffleEnvironment = createShuffleEnvironment(...)
                    # 初始化 KVStageService
                    kvStateService =
                    KvStateService.fromConfiguration(...)
                    # 初始化 BroadCastVariableManager
                    broadcastVariableManager = new BroadcastVariableManager();
                    # 初始化 TaskSlotTable
                    taskSlotTable = createTaskSlotTable(...)
                    # 初始化 DefaultJobTable
                    jobTable = DefaultJobTable.create();
                    # 初始化 JobLeaderService
                    jobLeaderService = new DefaultJobLeaderService(....)
                    # 初始化 TaskStateManager
                    taskStateManager = new TaskExecutorLocalStateStoresManager()
                    # 初始化 LibraryCacheManager
                    libraryCacheManager = new BlobLibraryCacheManager()
                    # 返回
                    return new TaskManagerServices(....)
                # 初始化一个 TaskExecutor
                return new TaskExecutor(.....)
                    # 初始化心跳管理器:jobManagerHeartbeatManager
                    this.jobManagerHeartbeatManager = createJobManagerHeartbeatManager(heartbeatServices,resourceId);
                    # 初始化心跳管理器:resourceManagerHeartbeatManager
                    this.resourceManagerHeartbeatManager = createResourceManagerHeartbeatManager(heartbeatServices,resourceId);
                    # 转到 TaskExecutor 的 onStart() 方法
                    TaskExecutor.onStart();
                        startTaskExecutorServices();
        # 启动 TaskManagerRunner
        taskManagerRunner.start();

        TaskManagerRunner的启动大致分为三类比较重要的:

  • 一些基础服务
  • TaskManagerService
  • TaskExecutor

        在这个TaskManager的启动过程中,最重要的事情,就是在TaskManger初始化一些基础服务和一些对外提供服务的核心服务之后就启动TaskExecutor,向JobManager进行TaskManager的注册,并且在注册成功之后,位置TaskManager和JobManager的心跳。

        和HDFS不一样的。这里是主从点主动发送心跳。

Flink集群主从架构:JobManager、TaskManger

Flink资源管理:ResourceManager + TaskExecutor(负责slot的管理+负责task的执行)

Yarn资源管理:ResourceManager + NodeManager

       ResourceManager的内部有一个:ApplicationMaster

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值