本篇我們介紹下,Flink在YARN上運行流程:
- 當開始一個新的Flink yarn 會話時,客戶端首先檢查所請求的資源(containers和內存)是否可用。如果資源夠用,之后,上傳一個jar包,包含Flink和HDFS的配置。
- 客戶端向yarn resource manager發送請求,申請一個yarn container去啟動ApplicationMaster。
- yarn resource manager會在nodemanager上分配一個container,去啟動ApplicationMaster
- yarn nodemanager會將配置文件和jar包下載到對應的container中,進行container容器的初始化。
- 初始化完成后,ApplicationMaster構建完成。ApplicationMaster會為TaskManagers生成新的Flink配置文件(使得TaskManagers根據配置文件去連接到JobManager),配置文件會上傳到HDFS。
- ApplicationMaster開始為該Flink應用的TaskManagers分配containers,這個過程會從HDFS上下載jar和配置文件(此處的配置文件是AM修改過的,包含了JobManager的一些信息,比如說JobManager的地址)
- 一旦上面的步驟完成,Flink已經建立並准備好接受jobs。
注意事項:
- 客戶端:這里的客戶端就是用戶提交Flink應用的節點。
- ApplicationMaster和JobManager運行同一個container中;因此ApplicationMaster,生成新的配置文件時,就知道JobManager的信息,比如說JobManager的地址。
- AM:也就是ApplicationMaster。ApplicationMaster container還為Flink的web界面提供服務。
- YARN中代碼使用的端口都是臨時的,這就使得用戶可以並行執行多個FLink會話。