flink client提交

cli.parseParameters(args));// 解析参数+提交 ==> 然后进到parseParameters方法,执行到switch case ACTION_RUN 1 ==> run(params); ==> runProgram ==> 2 ==> if (isNewMode && clusterId == null && runOptions.getDetachedMode()) {//yarn per job -d模式 ... } else { if (clusterId != null) {//standalone -d模式 和 yarn-session模式 client = clusterDescriptor.retrieve(clusterId); shutdownHook = null; } else {//job有多部分组成 } } ==>我们一个个看,先看yarn per job模式 clusterDescriptor.deployJobCluster ==》 YarnClusterDescriptor.deployJobCluster() ==> AbstractYarnClusterDescriptor.deployInternal ==》 startAppMaster ==》yarnClient.submitApplication(appContext); 最后返回一个 ClusterClient<ApplicationId> ==> client关闭 ==>接着看stand-alone模式 clusterDescriptor.retrieve(clusterId); ===> StandaloneClusterDescriptor.retrieve 返回一个 RestClusterClient<StandaloneClusterId>类型的client ==>和yarn-session模式,yarn sesion模式 app已经启动,这里只需要通过 appid获取相关的appmaster 的 ip port ,返回一个ClusterClient<ApplicationId>类型的 client clusterDescriptor.retrieve(clusterId); ===> AbstractYarnClusterDescriptor.retrieve ===> createYarnClusterClient ===> return ClusterClient<ApplicationId> 3 ===> 接着往下看到 executeProgram(program, client, userParallelism); ===》 JobSubmissionResult result = client.run(program, parallelism); //此时是RestClusterClient 提交任务 ===》 prog.invokeInteractiveModeForExecution(); //反射调用 wordcount的main 函数 ===》 执行到DataSet.print 会触发 ExecutionEnvironment.execute()执行 ,实际调用的是ContextEnvironment.execute()方法 ===》调用ClusterClient.run方法,最后会调用RestClusterClient.submitJob()方法,将jobGraph 用rest请求提交到JobManager,至此客户端提交完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值