在flink on yarn模式中
flink yarn-session的兩種提交方式
1.公用一個yarn-session
在yarn中初始化一個flink集羣,開闢指定的資源,以後提交任務都向這裏提交。這個flink集羣會常駐在yarn集羣中,除非手工停止。
2.每個job提供一個yarn-session
每次提交都會創建一個新的flink集羣,任務之間互相獨立,互不影響,方便管理。任務執行完成之後創建的集羣也會消失。
第一種方式
1.首先啓動yarn session,並且會啓動Flink的兩個必要服務:JobManager和TaskManagers,然後你可以向集羣提交作業。同一個Session中可以提交多個Flink作業。
線上腳本: bin/yarn-session.sh -n 7 -s 8 -jm 3072 -tm 32768 -qu root.*.*-nm *-* -d
其中申請7個taskManager 每個8核 每個taskmanager有32768M內存
這樣我們就啓動了一個yarn-session 就可以提交flink任務了。
2.我們可以使用./bin/flink腳本提交作業
線上腳本: bin/flink run -c **** jars/**** test
-c 是全類名
3.啓動之後如何停止運行的程序
關閉jobmanager
線上腳本:bin/flink cancel -yid application_1535964220442_0034
通過cancel命令進行停止
或者通過yarn application -kill applicationId 直接將yarn-session停止掉
或者通過 flink list 獲得 jobId , bin/flink cancel jobId
第二種方式
nohup bin/flink run -m yarn-cluster -yn 7 -s hdfs:///flink/savepoints/savepoint-* -c *.* jars/**** test > Flink-RealtimeDAU.log 2>&1 &
其中的-yn是指TaskManager的個數,必須指定。
總結
Flink提供在Yarn上兩種運行模式:第一種方式 Session-Cluster的資源在啓動集羣時就定義完成,後續所有作業的提交都共享該資源,作業可能會互相影響,因此比較適合小規模短時間運行的作業,對於第二種方式而言,所有作業的提交都是單獨的集羣,作業之間的運行不受影響(可能會共享CPU計算資源),因此比較適合大規模長時間運行的作業。