怎么掌握Flink纱上应用启动流程

  介绍

本篇内容介绍了“怎么掌握Flink>

Flink>

客户端提交流程

1。执行命令:bin/flink - d - m yarn-cluster…或bin/yarn-session运行。承宪…来提交每份工作运行模式或会话运行模式的应用;

2。解析命令参数项并初始化,启动指定运行模式,如果是每份工作运行模式将根据命令行参数指定的工作主类创建工作图;

<李>

如果可以从命令行参数(犹太人)或纱线性质临时文件($ {java.io.tmpdir}/.yarn-properties - $ {user.name})中获取应用ID,向指定的应用提交工作;

<李>

否则当命令行参数中包含- d(表示分离模式)和- m yarn-cluster(表示指定纱集群模式),启动每份工作运行模式;

<李>

否则当命令行参数项不包含-yq(表示查询纱集群可用资源)时,启动会话运行模式;

3。获取纱集群信息,新应用ID并启动运行前检查;

<李>

通过YarnClient向纱ResourceManager(下文缩写为:RM,纱纱主节点,负责整个集群资源的管理和调度)请求创建一个新应用(纱RM收到创建应用请求后生成新应用ID和容器申请的资源上限后返回),并且获取纱奴隶节点报告(纱RM返回全部奴隶节点的ID,状态,齿条,http地址,总资源,已使用资源等信息);

<李>

运行前检查:(1)简单验证纱集群能否访问;(2)最大节点资源能否满足flink JobManager/TaskManager vcores资源申请需求;(3)指定队列是否存在(不存在也只是打印警告信息,后续向纱提交时排除异常并退出);(4)当预期应用申请的容器资源会超出纱资源限制时抛出异常并退出;(5)当预期应用申请不能被满足时(例如总资源超出纱集群可用资源总量,容器申请资源超出纳米可用资源最大值等)提供一些参考信息。

4。将应用配置(flink-conf.yaml logback.xml, log4j . properties)和相关文件(flink jar船文件,用户jar、工作图等)上传至分布式存储(例如HDFS)的应用暂存目录(/用户/$ {user.name}/.flink);

5。准备应用提交上下文(ApplicationSubmissionContext,包括应用的名称,类型,队列,标签等信息和应用大师的容器的环境变量,类路径中,资源大小等),注册处理部署失败的关闭钩(清理应用对应的HDFS目录),然后通过YarnClient向纱RM提交应用;

6。循环等待直到应用状态为运行,包含两个阶段:

<李>

循环等待应用提交成功(提交):默认每隔200毫秒通过YarnClient获取应用报告,如果应用状态不是新的和NEW_SAVING则认为提交成功并退出循环,每循环10次会将当前的应用状态输出至日志:“没有完成申请提交,提交应用程序仍在“提交成功后输出日志:“提交应用程序“

<李>

循环等待应用正常运行(运行):每隔250毫秒通过YarnClient获取应用报告,每轮循环也会将当前的应用状态输出至日志:“集群部署,当前状态“。应用状态成功变为运行后将输出日志“纱应用程序已经部署成功!”并退出循环,如果等到的是非预期状态如失败/完成/死亡,就会在输出纱返回的诊断信息(“纱在部署应用程序意外转向状态。从纱线诊断:…“)之后抛出异常并退出。

Flink集群启动流程

1。纱RM中的ClientRMService(为普通用户提供的RPC服务组件,处理来自客户端的各种RPC请求,比如查询纱集群信息,提交,终止应用等)接收到应用提交请求,简单校验后将请求转交给RMAppManager (RM纱内部管理应用生命周期的组件),

2. RMAppManager根据应用提交上下文内容创建初始状态为新的应用,将应用状态持久化到RM状态存储服务(例如饲养员集群,RM状态存储服务用来保证RM重启,哈切换或发生故障后集群应用能够正常恢复,后续流程中的涉及状态存储时不再赘述),应用状态变为NEW_SAVING;

3。应用状态存储完成后,应用状态变为提交;RMAppManager开始向ResourceScheduler (RM纱可拔插资源调度器,纱自带三种调度器FifoScheduler/FairScheduler/CapacityScheduler,其中CapacityScheduler支持功能最多使用最广泛,FifoScheduler功能最简单基本不可用,今年社区已明确不再继续支持FairScheduler,建议已有用户迁至CapacityScheduler)提交应用,如果无法正常提交(例如队列不存在,不是叶子队列,队列已停,用超出队列最大应用数限制等)则抛出拒绝该应用,应用状态先变为FINAL_SAVING触发应用状态存储流程并在完成后变为失败,如果提交成功,应用状态变为接受;

4。开始创建应用运行实例(ApplicationAttempt,由于一次运行实例中最重要的组件是ApplicationMaster,下文简称,它的状态代表了ApplicationAttempt的当前状态,所以ApplicationAttempt实际也代表了我),初始状态为新;

怎么掌握Flink纱上应用启动流程