Flink on Yarn模式啓動流程分析

此文已由做者嶽猛受權網易雲社區發佈。
java

歡迎訪問網易雲社區,瞭解更多網易技術產品運營經驗。python


Flink On Yarn 架構

Paste_Image.pngweb

前提條件
首先須要配置YARN_CONF_DIR, HADOOP_CONF_DIR ,HADOOP_CONF_PATH其中一個用來確保Flink可以訪問HDFS和Yarn的RM。apache

主要啓動流程

1. 啓動進程

首先咱們經過下面的命令行啓動flink on yarn的集羣
bin/yarn-session.sh -n 3 -jm 1024 -nm 1024 -st安全

這裏將產生總共五個進程session

  • ** 1個FlinkYarnSessionCli  ---> Yarn Client **架構

  • ** 1個YarnApplicationMasterRunner ---> AM + JobManager**app

  • 3個YarnTaskManager --> TaskManager工具

即一個客戶端+4個container,1個container啓動AM,3個container啓動TaskManager。oop

2.啓動流程


    1. 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


免費體驗雲安全(易盾)內容安全、驗證碼等服務

更多網易技術、產品、運營經驗分享請點擊



相關文章:
【推薦】 AndroidView部分消失效果實現
【推薦】 非對稱加密與證書(上篇)

相關文章
相關標籤/搜索