Flink Yarn的2種任務提交方式


Flink Yarn的2種任務提交方式

Pre-Job模式介紹

每次使用flink run運行任務的時候,Yarn都會重新申請Flink集群資源(JobManager和TaskManager),任務執行完成之后,所申請的Flink集群資源就會釋放,所申請的Yarn資源是獨享的,不與其他任務分享資源。

運行命令

./bin/flink run -m yarn-cluster -yn 3 -ys 12 -p 4 
-yjm 1024m -ytm 4096m ./examples/batch/WordCount.jar

參數解讀:
-p 並行度
-yn Task Managers數量
-ys 每個TaskManager的Slot數量
-yjm 每個JobManager內存 (default: MB)
-ytm 每個TaskManager內存 (default: MB)

Session模式介紹

需要先在yarn上先分配一個flink集群,后續所有任務都共享這個Flink集群上的資源,該Flink不會因為任務的結束而終止。

先向Yarn申請Flink所需資源

flink客戶端目錄下,執行如下命令:

bin/yarn-session.sh -jm 1024m -tm 4096m -n 4 -s 8 -na hdq-yarn

參數含義:
-jm jobmanager的內存大小
-tm taskManager的內存大小
-n taskManager個個數
-s 每個taskManager中slot的個數

執行完成之后會輸出如下日志:

Flink JobManager is now running on 172-16-122-56:9101 with leader id 00000000-0000-0000-0000-000000000000.
JobManager Web Interface: http://172-16-122-56:9101

運行完成后,Yarn的集群上會有一個常駐任務。
此時,Flink集群的資源都已經申請完畢。
這里需要記住JobManager的ip和端口:172-16-122-56:9101,等會運行Flink任務的時候需要修改這里的配置。

運行Flink程序

運行Flink任務之前需要修改Flink客戶端下的配置文件:conf/flink-conf.yaml
分別修改jobmanager.rpc.address和rest.port,對應第二步中的172-16-122-56和9101。

jobmanager.rpc.address: 172-16-122-56
rest.port: 9101

修改完成之后即可運行Flink任務:

/flink/bin/flink run  
-C file:/plugins/oraclereader/flinkx-oracle-reader.jar 
-C file:/plugins/mysqlwriter/flinkx-mysql-writer.jar 
-C file:/plugins/common/flinkx-rdb.jar 
-C file:/plugins/common/flinkx-rdb-2.0.0.jar 
-C file:/plugins/common/flink-table_2.11-1.7.2.jar /plugins/flinkx.jar  
-job fx_2065.json 
-pluginRoot /plugins 
-jobid 2065

此時,flink會自動將任務提交到我們申請的Flink集群上進行運行。

注意事項

如果程序依賴第三方jar,通過-C傳參的方式進行依賴,那么整個Yarn集群都要有jar文件。
其中-C所指定的所有jar文件,在整個Yarn集群的機器上都必須存在,否則運行會失敗。不支持hdfs共享存儲,支持ftp等其他協議。

總結

  • Pre-Job模式: 運行時需要會自動申請Yarn資源,申請完成后才能運行任務,並且所申請的資源是該任務獨享的,運行完成后資源會自動釋放;適合資源消耗比較大的情況。
  • Session模式: 運行之前需要在Yarn上先申請好資源才能提交任務,所有任務會共享資源,適合小任務運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM