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

前绪

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

正题

创建LogicalDag

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

java 复制代码
LogicalDag logicalDag = getLogicalDag();

本次任务的固定信息

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

java 复制代码
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去执行。

java 复制代码
return jobClient.createJobProxy(jobImmutableInformation);

提交任务

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

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

submitJob方法

创建一个ClientMessage对象后,构建一个job执行的PassiveCompletableFuture对象submitJobFuture,调用对象的join方法。

结束

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

java 复制代码
JobResult jobResult = clientJobProxy.waitForJobCompleteV2();
相关推荐
SeaTunnel2 天前
从 JSON 到 JSONL,Apache SeaTunnel 如何解决HTTP 大数据传输的内存难题?
http·开源·json·apache·数据集成·seatunnel
ApacheSeaTunnel3 天前
数据接入与同步不能是“黑盒”!
数据集成·seatunnel·数据同步
ApacheSeaTunnel10 天前
从 60万行/秒说起,看 SeaTunnel Zeta 基准测试如何做到”测得准“
大数据·数据集成·基准测试·seatunnel·数据同步
SeaTunnel15 天前
Apache SeaTunnel 提交一个任务都经过了什么?
java·大数据·服务器·apache·etl·seatunnel
ApacheSeaTunnel16 天前
Apache SeaTunnel 提交一个任务都经过了什么?
大数据·开源·数据集成·seatunnel·技术分享·数据同步
ApacheSeaTunnel24 天前
Apache SeaTunnel 2.3.12 进阶实战:MySQL to PostgreSQL 5 套生产场景同步 Demo
大数据·开源·数据集成·seatunnel·技术分享·数据同步
ApacheSeaTunnel1 个月前
Apache SeaTunnel AI CLI Benchmark:7 款大模型、100 个 ETL 任务实测,谁真正能跑起来?
大数据·ai·开源·大模型·数据集成·cli·seatunnel·技术分享·数据同步
SeaTunnel1 个月前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
ApacheSeaTunnel1 个月前
一套替代四套!同程旅行用 Apache SeaTunnel 搭建多模态统一数据通道
大数据·数据库·ai·开源·数据集成·seatunnel·技术分享·数据同步
ApacheSeaTunnel1 个月前
为什么 Data Ingestion 还没有被 Fivetran/Airbyte 完全解决?
大数据·开源·数据集成·seatunnel·技术分享·数据同步·airbyte·fivetran