flink jobmanager启动

本文详细解析了Flink JobManager的启动过程,从start-cluster.sh脚本开始,介绍了StandaloneSessionClusterEntrypoint主类,深入到startCluster、initializeServices等关键方法,涵盖了RPC服务、心跳服务、监控指标服务等组件的初始化,并阐述了webMonitor、resourceManager和dispatcher三大核心组件的作用及启动细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

入口分析
从flink安装包的bin/start-cluster.sh分析开始,会发现Jm的主类org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint,tm的主类是
org.apache.flink.runtime.taskexecutor.TaskManagerRunner

StandaloneSessionClusterEntrypoint
public static void main(String[] args) { //args --configDir xxx --executionMode cluster
    ... 解析参数

    Configuration configuration = loadConfiguration(entrypointClusterConfiguration);
    StandaloneSessionClusterEntrypoint entrypoint = new StandaloneSessionClusterEntrypoint(configuration);
    entrypoint.startCluster();//启动
}

===>

protected void startCluster() {
    LOG.info("Starting {}.", getClass().getSimpleName());
    try {
        configureFileSystems(configuration);

        SecurityContext securityContext = installSecurityContext(configuration);

        securityContext.runSecured((Callable<Void>) () -> {
            runCluster(configuration);//启动cluster

            return null;
        });
    } catch (Throwable t) {
        LOG.error("Cluster initialization failed.", t);

        shutDownAndTerminate(
            STARTUP_FAILURE_RETURN_CODE,
            ApplicationStatus.FAILED,
            t.getMessage(),
            false);
    }
}

===>

protected void runCluster(Configuration configuration) throws Exception {
    synchronized (lock) {
        initializeServices(configuration);//初始化组件

        // write host information into configuration
        configuration.setString(JobManagerOptions.ADDRESS, commonRpcService.getAddress());
        configuration.setInteger(JobManagerOptions.PORT, commonRpcService.getPort());

        startCl

FlinkJobManagerFlink集群中的一个重要组件,负责协调和管理整个作业的执行。JobManager的主要职责包括作业调度、资源管理、任务分配和监控等。 1. 作业调度:JobManager负责接收和解析用户提交的作业,并将其转化为执行图(Execution Graph)。它根据作业的依赖关系和优先级进行调度,决定任务的执行顺序,并将任务分配给TaskManager进行执行。 2. 资源管理:JobManager负责整个集群的资源管理。它会根据作业的需求和集群的可用资源,动态地分配和管理TaskManager的资源。JobManager会监控每个TaskManager的负载情况,并在需要时进行资源的重新分配和调整,以保证作业的高效执行。 3. 任务分配:JobManager将作业划分为一系列的任务(Task),并将这些任务分配给不同的TaskManager进行执行。它会根据作业的拓扑结构和数据流动关系,将任务分配到合适的TaskManager上,并负责处理任务之间的数据传输和通信。 4. 监控与容错:JobManager监控整个作业的执行状态,并负责作业的容错机制。它会定期检查任务的健康状况,处理任务失败或异常情况,并尝试重新启动失败的任务。JobManager还负责保存作业的元数据和状态信息,以便在故障恢复时能够准确恢复作业的执行状态。 总之,JobManagerFlink集群中扮演着重要的角色,它负责整个作业的调度、资源管理、任务分配和监控等关键工作。通过JobManager的协调和管理,Flink能够高效地执行大规模数据处理作业,并提供良好的容错性和可伸缩性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值