我在使用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邮件归档
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邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。