Flink on Yarn模式啟動流程分析
此文已由作者嶽猛授權網易雲社區發布。
歡迎訪問網易雲社區,了解更多網易技術產品運營經驗。
Flink On Yarn 架構
Paste_Image.png
前提條件
首先需要配置YARN_CONF_DIR, HADOOP_CONF_DIR ,HADOOP_CONF_PATH其中一個用來確保Flink能夠訪問HDFS和Yarn的RM。
主要啟動流程
1. 啟動進程
首先我們通過下面的命令行啟動flink on yarn的集群
bin/yarn-session.sh -n 3 -jm 1024 -nm 1024 -st
這裏將產生總共五個進程
** 1個FlinkYarnSessionCli ---> Yarn Client **
** 1個YarnApplicationMasterRunner ---> AM + JobManager**
3個YarnTaskManager --> TaskManager
即一個客戶端+4個container,1個container啟動AM,3個container啟動TaskManager。
2.啟動流程
FlinkYarnSessionCli 啟動的過程中首先會檢查Yarn上有沒有足夠的資源去啟動所需要的container,如果有,則上傳一些flink的jar和配置文件到HDFS,這裏主要是啟動AM進程和TaskManager進程的相關依賴jar包和配置文件。
2.接著yarn client會首先向RM申請一個container來 ApplicationMaster(YarnApplicationMasterRunner進程),然後RM會通知其中一個NM啟動這個container,被分配到啟動AM的NM會首先去HDFS上下載第一步上傳的jar包和配置文件到本地,接著啟動AM;在這個過程中會啟動JobManager,因為JobManager和AM在同一進程裏面,它會把JobManager的地址重新作為一個文件上傳到HDFS上去,TaskManager在啟動的過程中也會去下載這個文件獲取JobManager的地址,然後與其進行通信;AM還負責Flink的web 服務,Flink裏面用到的都是隨機端口,這樣就允許了用戶能夠啟動多個yarn session。
啟動命令:Paste_Image.png
3.AM 啟動完成以後,就會向AM申請container去啟動TaskManager,啟動的過程中也是首先從HDFS上去下載一些包含TaskManager(yarn模式的話這裏就是YarnTaskManager )主類 的jar和啟動過程依賴的配置文件,如JobManager地址所在的文件,然後利用java cp的方式去啟動YarnTaskManager ,一旦這些準備好,就可以接受任務了。這個和spark on yarn的yarn cluster模式其實差不多,也是分為兩個部分,一個是準備工人和工具(spark是啟動sc的過程,flink是初始化ENV的過程),另外一個就是給工人分配具體工作(都是執行具體的操作,action什麽的觸發)。
啟動命令:Paste_Image.png
進程信息
** FlinkYarnSessionCli ** /home/hadoop/ym/jdk1.8.0_101/bin/java -Xmx512m -classpath /home/hadoop/ym/flink-1.1.3/lib/flink-dist_2.10-1.1.3.jar:/home/hadoop/ym/flink-1.1.3/lib/flink-python_2.10-1.1.3.jar:/home/hadoop/ym/flink-1.1.3/lib/log4j-1.2.17.jar:/home/hadoop/ym/flink-1.1.3/lib/slf4j-log4j12-1.7.7.jar::/home/hadoop/ym/hadoop-2.7.1/etc/hadoop: -Dlog.file=/home/hadoop/ym/flink-1.1.3/log/flink-xxxuser-yarn-session-db-180.photo.163.org.log -Dlog4j.configuration=file:/home/hadoop/ym/flink-1.1.3/conf/log4j-yarn-session.properties -Dlogback.configurationFile=file:/home/hadoop/ym/flink-1.1.3/conf/logback-yarn.xml org.apache.flink.yarn.cli.FlinkYarnSessionCli -j /home/hadoop/ym/flink-1.1.3/lib/flink-dist_2.10-1.1.3.jar -n 3 -jm 1024 -nm 1024 -st ** YarnApplicationMasterRunner ** /home/hadoop/ym/jdk1.8.0_101/bin/java -Xmx424M -Dlog.file=/home/hadoop/ym/hadoop-2.7.1/hadoop/nm/application_1480493133223_0009/container_1480493133223_0009_01_000001/jobmanager.log -Dlogback.configurationFile=file:logback.xml -Dlog4j.configuration=file:log4j.properties org.apache.flink.yarn.YarnApplicationMasterRunner **個YarnTaskManager ** /home/hadoop/ym/jdk1.8.0_101/bin/java -Xms424m -Xmx424m -XX:MaxDirectMemorySize=424m -Dlog.file=/home/hadoop/ym/hadoop-2.7.1/hadoop/nm/application_1480493133223_0009/container_1480493133223_0009_01_000003/taskmanager.log -Dlogback.configurationFile=file:./logback.xml -Dlog4j.configuration=file:./log4j.properties org.apache.flink.yarn.YarnTaskManager --configDir .
後面我會從源代碼的角度看下啟動流程
鏈接:https://www.jianshu.com/p/20d5c3ad5843
免費體驗雲安全(易盾)內容安全、驗證碼等服務
更多網易技術、產品、運營經驗分享請點擊。
相關文章:
【推薦】 【0門檻】PR稿的自我修養
【推薦】 Hadoop分布式集群的搭建
Flink on Yarn模式啟動流程分析