前言
flink應用提交到Yarn上目前支持兩種模式:
(1)Yarn Session Model:Flink會向hadoop Yarn 申請足夠多的資源,並在Yarn上啓動長時間運行的Flink Session集羣,用戶可以通過RestAPI或Web頁面將Flink任務提交到Flink Session集羣上運行。
(2)Single Job Model:每個Flink任務單獨向Yarn提交一個Application,並且每個任務都有自己的JobManager和Taskmanager,當任務結束後對應的組件也會隨任務釋放,這種方式類似於批處理,這裏就不詳細說明,目前批處理還是更傾向於用Spark
準備環境
hadoop集羣:安裝參考教程
flink-1.7.2-bin-hadoop26-scala_2.11.tgz 點擊鏈接下載
tar -zxvf flink-1.7.2-bin-hadoop26-scala_2.11.tgz
cd flink-1.7.2
Yarn Session模式
Session 集羣會一直運行在Hadoop Yarn之上,底層對應的其實是hadoop的一個Yarn Application應用。
當Yarn Session Cluster啓動之後,用戶就能夠通過命令行或RestAPI等方式向Yarn Session集羣中提交Flink任務,從而不需要再與Yarn進行交互,這樣其實也是讓Flink應用在相同的集羣環境運行,從而屏蔽底層不同的運行環境。
啓動Flink Yarn Session集羣
啓動命令:
./bin/yarn-session.sh -n 4 -jm 1024m -tm 1024m -s 4
上面命令中:
-n參數配置啓動4個Yarn Container
-jm參數配置JobManager的JVM內存大小
-tm參數配置TaskManager的內存大小
-s表示集羣中共啓動4個slots來提供給應用以啓動task實例
集羣啓動完之後,能夠在Yarn的任務管理界面查看Flink Session集羣的狀況,並點擊ApplicationMaster對應的URL,進入Flink Session Cluster集羣中
注:在On Yarn的模式中,每次啓動JobManager的地址和端口都不是固定的
提交任務到Session
當Flink Yarn Session集羣構建好之後,就可以向Session集羣中提交Flink任務
./flink run /app/flinkonyarn/examples/streaming/WordCount.jar
我提交了一個flink自帶的example上去,如下圖:
關閉Session集羣
yarn application -kill application_1585656933406_0001
application_1585656933406_0001 提交到yarn 上面的session集羣的進程號