簡述下背景
大家經常關注的點就是一個Application是如何提交到Yarn上,Application的一個執行流程,但是估計對Application的依賴文件是什么時間,如何上傳到到對應的nodemanager上,并且被被container如何加載和使用估計不清楚,這兒簡單介紹下。
在YARN中,分布式緩存是一種分布式文件與緩存機制,類似于MRv1中的DistributedCache,其主要作用是將用戶應用程序執行所需要的外部文件資源自動透明地下載并緩存到各個節點上,從而省去了用戶手動部署這些文件的麻煩。
Yarn分布式緩存工作流程如下:
- 1、 客戶端將應用程序所需的文件資源(外部字典,JAR包,二進制文件等)提交到HDFS上
- 2、客戶端將應用程序提交到ResourceManager上
- 3、 ResourceManager和某個NodeManager通信,啟動應用程序的ApplicationMaster,NodeManagers收到命令后,首先從HDFS上下載文件(緩存),然后啟動ApplcationMaster。
- 4、ApplcationMaster和ResourceManager通信,請求和獲取計算資源。
- 5、ApplciationMaster收到新分配的計算資源后,與對應的NodeManager通信,以啟動任務。
- 6、如果該應用程序第一次在該節點上啟動任務,則NodeManager首先從HDFS上下載文件緩存到本地,然后啟動任務。
- 7、NodeManager后續收到啟動任務的請求后,如果文件已經在本地緩存,則會直接直接執行任務,否則等待文件緩存完成后才會啟動。