主要編寫步驟
(1) 涉及到的RPC協議
通常而言,編寫一個YARN Appcalition涉及到3個RPC協議,分別為:
1) ClientRMProtocol(Client<–>ResourceManager)
Client透過該協議將應用程式提交到ResourceManager上、查詢應用程式的執行狀態或者殺死應用程式等。
2) AMRMProtocol(ApplicationMaster<–>ResourceManager)
ApplicationMaster使用該協議向ResourceManager註冊、申請資源以執行自己的各個任務。
3) ContainerManager(ApplicationMaster<–> NodeManager)
ApplicationMaster使用該協議要求NodeManager啟動/撤銷Container,或者獲取各個container的執行狀態。
(2)客戶端編寫流程
步驟1 Client透過RPC函式ClientRMProtocol#getNewApplication從ResourceManager中獲取唯一的application ID
步驟2 Client透過RPC函式ClientRMProtocol#submitApplication將ApplicationMaster提交到ResourceManager上。
(3)ApplicationMaster編寫流程
步驟1 ApplicationMaster透過RPC函式AMRMProtocol#registerApplicationMaster向ResourceManager註冊。
步驟2 ApplicationMaster透過RPC函式AMRMProtocol#allocate向ResourceManager申請資源(以Container形式表示)。
步驟3 ApplicationMaster透過RPC函式ContainerManager#startContainer要求對應的NodeManager啟動Container。
ApplicationMaster重複步驟2~3,直到所有任務執行成功。
另外,在應用程式執行過程中,使用者可使用ClientRMProtocol#getApplicationReport 查詢應用程式執行狀態,也可以使用ClientRMProtocol#forceKillApplication將應用程式殺死。
主要編寫步驟
(1) 涉及到的RPC協議
通常而言,編寫一個YARN Appcalition涉及到3個RPC協議,分別為:
1) ClientRMProtocol(Client<–>ResourceManager)
Client透過該協議將應用程式提交到ResourceManager上、查詢應用程式的執行狀態或者殺死應用程式等。
2) AMRMProtocol(ApplicationMaster<–>ResourceManager)
ApplicationMaster使用該協議向ResourceManager註冊、申請資源以執行自己的各個任務。
3) ContainerManager(ApplicationMaster<–> NodeManager)
ApplicationMaster使用該協議要求NodeManager啟動/撤銷Container,或者獲取各個container的執行狀態。
(2)客戶端編寫流程
步驟1 Client透過RPC函式ClientRMProtocol#getNewApplication從ResourceManager中獲取唯一的application ID
步驟2 Client透過RPC函式ClientRMProtocol#submitApplication將ApplicationMaster提交到ResourceManager上。
(3)ApplicationMaster編寫流程
步驟1 ApplicationMaster透過RPC函式AMRMProtocol#registerApplicationMaster向ResourceManager註冊。
步驟2 ApplicationMaster透過RPC函式AMRMProtocol#allocate向ResourceManager申請資源(以Container形式表示)。
步驟3 ApplicationMaster透過RPC函式ContainerManager#startContainer要求對應的NodeManager啟動Container。
ApplicationMaster重複步驟2~3,直到所有任務執行成功。
另外,在應用程式執行過程中,使用者可使用ClientRMProtocol#getApplicationReport 查詢應用程式執行狀態,也可以使用ClientRMProtocol#forceKillApplication將應用程式殺死。