flink的main方法和execute方法的关系

背景:

执行flink时,我们几种执行模式,比如在IDE本地执行模式以及远程YARN执行的模式等,你是否有疑问,为什么他们可以共用相同的代码呢?其实这就涉及到main方法和execute方法的关系了

flink的main方法和execute方法的关系

flink的main方法其实主要目的是为了构造JobGraph图,这一步不论对于本地执行环境还是远程执行环境都是一样的,有区别的是创建的执行环境不一样:

创建本地执行环境:
StreamExecutionEnvironment.createLocalEnvironment()

创建远程执行环境:
StreamExecutionEnvironment.createRemoteEnvironment(
host, // 远程JobManager地址
port,  //远程JobManager端口
"jar path"  //应用代码类
)

也就是说不论是本地还是远程执行环境,main方法的第一个作用也就是构造JobGraph图是一样的,区别只在于构造完JobGraph之后,是提交到本地启动的JobManager线程执行还是提交到远程的JobManager进程执行
示意图如下:
flink的main方法和execute方法的关系_第1张图片

你可能感兴趣的:(flink,flink,大数据)