记第一次跟踪seatunnel的任务运行过程二——ClientJobExecutionEnvironment的execture方法

前绪

记第一次跟踪seatunnel的任务运行过程

正题

创建LogicalDag

创建一个LogicalDag,根据代码注释理解LogicalDag里维护的就是任务配置文件中的source、transformer、sink。

LogicalDag logicalDag = getLogicalDag();

本次任务的固定信息

固定本此job的固定信息,其中要注意的就是jarUrls和connectorJarIdentifiers,就是你部署的seatunnel服务下libs下的依赖的第三方jar包,以及connector下的的连接器。job执行用到第三方jar或者connector时就会从这里获取。

JobImmutableInformation jobImmutableInformation = new JobImmutableInformation(
	Long.parseLong(jobConfig.getJobContext().getJobId()),
	jobConfig.getName(),
	isStartWithSavePoint,
	seaTunnelHazelcastClient.getSerializationService().toData(logicalDag),
	jobConfig,
	new ArrayList<>(jarUrls),
	new ArrayList<>(connectorJarIdentifiers)
);

创建并返回代理对象,过程中完成了任务的提交

根据前面收集到的job信息,创建一个job代理并返回,同时在这个过程中完成job的提交:封装成一个任务,提交给Hazelcast去执行。

return jobClient.createJobProxy(jobImmutableInformation);

提交任务

jobClient的createJobProxy方法中创建了一个ClientJobProxy对象,在ClientJobProxy的构造函数中完成了job的提交。

    public ClientJobProxy(
            @NonNull SeaTunnelHazelcastClient seaTunnelHazelcastClient,
            @NonNull JobImmutableInformation jobImmutableInformation) {
        this.seaTunnelHazelcastClient = seaTunnelHazelcastClient;
        this.jobId = jobImmutableInformation.getJobId();
        submitJob(jobImmutableInformation);
    }

submitJob方法

创建一个ClientMessage对象后,构建一个job执行的PassiveCompletableFuture对象submitJobFuture,调用对象的join方法。
在创建ClientMessage是调用了seaTunnelHazelcastClient.getSerializationService().toData(jobImmutableInformation),在这个过程中完成了对任务参数(jobImmutableInformation)的序列化,方便提交给Hazelcast去执行任务。

结束

任务提交完成,在主流程(ClientJobExecutionEnvironment的execture方法)中等待任务的结果。

JobResult jobResult = clientJobProxy.waitForJobCompleteV2();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值