开发者社区> 问答> 正文

flink分为jobmanger和taskmanager,我怎么区分哪些代码是运行

我在使用flink的过程中,有些疑问请教下各位: 1.flink分为jobmanger和taskmanager,我怎么区分哪些代码是运行在jobmanager,哪些在taskmanager? 2.假设我jarA中使用AbstractYarnClusterDescriptor.deployJobCluster()替代flink run命令(想直接通过jar包启动方式直接提交flink任务上yarn),部署jarB到yarn上,jarB中mainClass中使用StreamExecutionEnvironment.execute去执行流任务,通过java -cp jarA的方式来启动,首先能确定的一点是jarA运行在服务器本地端,jarB中mainClass是否已经运行在yarn上了?还是运行在服务器端? 服务器端指的是java -cp执行的服务器 我这边本身从日志打印和远程debug(java -cp中加remote debug参数和flink-conf.yaml中加入remote debug配置)来看,jarB中的mainClass还未运行在yarn上,这个是什么原因?

*来自志愿者整理的flink邮件归档

展开
收起
游客nnqbtnagn7h6s 2021-12-06 20:14:17 582 0
1 条回答
写回答
取消 提交回答
  • Yarn perjob模式,用户的main方法运行在Client端,编译生成JobGraph会ship到JobManager进行 任务的调度。我理解用户的代码一般是不会在JobManager端运行的,JM会将task调度到TaskManager 上运行。对于Yarn application模式,用户main运行在JobManager生成JobGraph,其他相同。

    还是如上所说,取决于你是deployJobCluster还是deployApplicationCluster,在1.11以前只有deployJobCluster, 也就是mainClass是在client端运行(调用deployJobCluster的地方)。这个是预期内的,因为需要生成 JobGraph之后再上传,也是为了解决这个问题引入了Application Mode[1].

    [1]. https://cwiki.apache.org/confluence/display/FLINK/FLIP-85+Flink+Application+Mode

    *来自志愿者整理的flink邮件归档

    2021-12-06 21:42:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载