flink run 参数_Flink从入门到放弃之源码解析系列-第1章 Flink组件和逻辑计划

新年第一发,打麻将输的好惨啊!说好的M*ABC+N*DDD+EE就能胡牌呢!!!

Flink 基本组件和逻辑计划生成

概要和背景

flink是一个被誉为 the 4th G 的计算框架,不同的框架特性及其代表项目列表如下:

第一代

第二代

第三代

第四代

Batch

BatchInteractive

Batch Interactive Near-Real-TimeInterative-processing

Hybrid Interactive Real-Time-StreamingNative-Iterative-processing

DAG Dataflows

RDD

Cyclic Dataflows

Hadoop MapReduce

TEZ

Spark

Flink

本文主要介绍flink的核心组件以及物理计划的生成过程

参考代码分支 flink-1.7.1 本系列大概有7-10章,那3章是留给阿里开源的Blink的新特性的。。。

核心组件介绍

这里只介绍 on yarn 模式下的组件

flink 的 on yarn 模式支持两种不同的类型:

  1. 单作业单集群
  2. 多作业单集群

首先介绍 单作业单集群 的架构,单作业单集群下一个正常的 flink 程序会拥有以下组件

job Cli: 非 detatched 模式下的客户端进程,用以获取 yarn Application Master 的运行状态并将日志输出掉终端

JobManager[JM]: 负责作业的运行时计划 ExecutionGraph 的生成、物理计划生成和作业调度

TaskManager[TM]: 负责被分发 task 的执行、心跳/状态上报、资源管理

Tips:

启动Flink Yarn Session有2种模式:分离模式、客户端模式

通过-d指定分离模式,即客户端在启动Flink Yarn Session后,就不再属于Yarn Cluster的一部分。如果想要停止Flink Yarn Application,需要通过yarn application -kill 命令来停止。

整体的架构大致如下图所示:

b247935ff59a2484b42f751eff3120e7.png

下面将以一次 Job 的提交过程描述 flink 的各组件的作用及协同

作业提交流程分析

单作业单集群模式下,一个作业会启动一个 JM,并依据用户的参数传递启动相应数量的 TM,每个 TM 运行在 yarn 的一个 container 中,

一个通常的 flink on yarn 提交命令:./bin/flink run -m yarn-cluster -yn 2 -j flink-demo-1.0.0-with-dependencies.jar —ytm 1024 -yst 4 -yjm 1024 —yarnname flink_demo flink 在收到这样一条命令后会首先通过 Cli 获取 flink 的配置,并解析命令行参数。

配置加载

CliFrontend.java 是 flink 提交作业的入口

//CliFrontend line144

// 1. find the configuration directory

final String configurationDirectory = getConfigurationDirectoryFromEnv();

这里会尝试加载 conf 文件夹下的所有 yaml 文件,配置文件的命名并没有强制限制

参数解析

解析命令行参数的第一步是路由用户的命令,然后交由run方法去处理

//CliFrontend line1119

try {

final CliFrontend cli = new CliFrontend(

configuration,

customCommandLines);

SecurityUtils.install(new SecurityConfiguration(cli.configuration));

int retCode = SecurityUtils.getInstalledContext()

.runSecured(() -> cli.parseParameters(args));

System.exit(retCode);

}

catch (Throwable t) {

final Throwable strippedThrowable = ExceptionUtils.stripException(t, UndeclaredThrowableException.class);

LOG.error("Fatal error while running command line interface.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值