进入org.apache.flink.client.cli.CliFrontend

开头一句话
图片.png

查找main方法

在idea中 输入快捷键 Ctrl + O 找到main方法图片.png点击getConfigurationDirectoryFromEnv()方法图片.png
点击 ENV_FLINK_CONF_DIR图片.png发现这些东西,是在环境信息中去找(config.sh文件中)

获取conf路径,加载配置文件,点进去 loadConfiguration 方法图片.png点进去到118行发现是获取Flink yaml 文件信息。。图片.png
加载自定义命令行 ,点进去 loadCustomCommandLines 方法图片.png
1,GenericCLi客户端图片.png2,FlinkYarnSessionCLi客户端图片.png3,DefaultCLI 默认客户端图片.png顺序是1,2,3 最后才是Flink 自带的默认客户端执行集群程序

程序入口,点进去parseAndRun 方法图片.png点击 ACTION_RUN 进去查看 图片.png里面是 Flink 提交程序的命令行参数命令图片.png图片.png
点击 getRunCommandOptions 查看图片.png图片.png
这里面的内容无关紧要图片.png

点击 getCommandLine 方法(往上看第三个图中)(核心逻辑)
图片.png跳转,再跳转图片.png往下翻,如果参数不为空,则对 arguments 进行遍历,调用 handleToken方法图片.png

如果参数是 — 开头,就走handleLongOption 方法,如果参数是 - 开头就走 handleShortAndLongOption方法,核心就是用特定的字符串,做个区分,图片.png