YARN模式
概念
- Flink提供了兩種在yarn上執行的模式,分別為Session-Cluster和Per-Job-Cluster模式
Session-cluster模式
- Session-Cluster模式需要先啟動叢集,然後再提交作業,接著會向yarn申請一塊空間後,資源永遠保持不變,如果資源滿了,下一個作業就無法提交,只能等到yarn中的其中一個作業執行完成後,釋放了資源,下個作業才會正常提交
- 所有作業共享Dispatcher和ResourceManager;共享資源;適合規模小執行時間短的作業
- 在yarn中初始化一個flink叢集,開闢指定的資源,以後提交任務都向這裡提交,這個flink叢集會常駐在yarn叢集中,除非手工停止
Per-Job-Cluster模式
- 一個Job會對應一個叢集,每提交一個作業會根據自身的情況,都會單獨向yarn申請資源,直到作業執行完成,一個作業的失敗與否並不會影響下一個作業的正常提交和執行
- 獨享Dispatcher和ResourceManager,按需接受資源申請;適合規模大長時間執行的作業
- 每次提交都會建立一個新的flink叢集,任務之間互相獨立,互不影響,方便管理,任務執行完成之後建立的叢集也會消失
Session-cluster模式
- 啟動叢集
[user@hadoop102 ~]$ myhadoop.sh start
- 啟動yarn-session
[user@hadoop102 ~]$ cd /opt/module/flink-1.10.1/bin/
[user@hadoop102 bin]$ ./yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d
- -n(--container):TaskManager的數量
- -s(--slots):每個TaskManager的slot數量,預設一個slot一個core,預設每個taskmanager的slot的個數為1,有時可以多一些taskmanager,做冗餘
- -jm:JobManager的記憶體(單位MB)
- -tm:每個taskmanager的記憶體(單位MB)
- -nm:yarn的appName(現在yarn的ui上的名字)
- -d:後臺執行
- 執行任務
[user@hadoop102 flink-1.10.1]$ ./bin/flink run -c com.hongpin.bigdata.StreamWordCount Flink-1.0-SNAPSHOT.jar --host 192.168.10.102 --port 7777
- 取消yarn-session
yarn application --kill application_ID
Per Job Cluster模式
- 不啟動yarn-session,直接執行job
[user@hadoop102 flink-1.10.1]$ ./bin/flink run -m yarn-cluster -c com.hongpin.bigdata.StreamWordCount Flink-1.0-SNAPSHOT.jar --host 192.168.10.102 --port 7777
在YARN控制檯檢視任務狀態
本地執行模式
[user@hadoop102 flink-1.10.1]$ ./bin/flink run examples/batch/WordCount.jar
Executing WordCount example with default input data set.
Use --input to specify file input.
Printing result to stdout. Use --output to specify output path.
Job has been submitted with JobID 41c41147e842a1398297abe2dec35bbd
Program execution finished
Job with JobID 41c41147e842a1398297abe2dec35bbd has finished.
Job Runtime: 907 ms
Accumulator Results:
- 8a95d00f656cb4b9397518289d919555 (java.util.ArrayList) [170 elements]
(a,5)
(action,1)
(after,1)
(against,1)
(all,2)
(and,12)
(arms,1)
(arrows,1)
(awry,1)