標籤:des style io ar color 使用 sp for 檔案
協議ApplicationClientProtocol
Hadoop-Yarn 源碼閱讀-Yarn
client與ResourceManager之間的協議,用來
- 提交、中止作業
- 擷取應用資訊、叢集metrics資訊、節點資訊、隊列資訊和ACL資訊
各介面說明:
- public GetNewApplicationResponse getNewApplication(GetNewApplicationRequest request) throws YarnException, IOException;
用戶端使用該方法從ResourceManager擷取一個新的ApplicationId以提交一個新的Application(後文使用縮寫App)。ResourceManager(後文使用縮寫RM)響應一個GetNewApplicationResponse類型的值,該值包含一個新的、遞增的ApplicationId和叢集最大可用資源等其他資訊。
@param:request:要獲得新ApplicationId的ApplicationRequest
@return:包含ApplicationId的GetNewApplicationRequest類型的值
- public SubmitApplicationResponse submitApplication(SubmitApplicationRequest request) throws YarnException, IOException;
用戶端使用該介面向RM提交一個新的App。
用戶端需要提供更多資訊,比如隊列;啟動並運行ApplicationMaster的那個container的相關資訊,包括:本地資源(二進位檔案、jars、files等),安全性權杖,環境變數和運行命令。
當前,當接受一個App提交,RM響應一個(空的)SubmitApplicationResponse;拒絕則拋出一個異常。調用該方法之後應該立即調用getApplicationReport(GetApplicationReportRequest)來確定App是否被正確得提交。
安全模式下,在接收App提交前,RM會檢查用戶端是否具有隊列的存取權限。
@param:request:提交新App請求
@return:(空)接收提交的結果
@remark:當ResourceRequest超過配置的最低或最高資源邊界,將拋出一個異常
- public KillApplicationResponse forceKillApplication(KillApplicationRequest request) throws YarnException, IOException;
用戶端使用該方法來中止一個已提交的App。
用戶端通過參數request中的ApplicationId成員指定需要中止的App。
安全模式下,在中止App前,RM會檢查用戶端是否具有App、隊列的存取權限。
當前,當中止成功RM響應一個空響應;當拒絕中止,RM拋出一個異常。
@param:request:中止已提交App的請求
@return:如上述
- public GetApplicationReportResponse getApplicationReport(GetApplicationReportRequest request) throws YarnException, IOException;
用戶端使用該方法從RM處獲得一個App報告。
用戶端通過在request中設定ApplicationId來指定想要獲得報告的App。
安全模式下,在接受App報告請求前,RM檢查用戶端是否有App、隊列的存取權限。
RM響應一個GetApplicationReportResponse類型的值,該值包含指定App的App報告。
如果使用者沒有VIEW_APP許可權,以下欄位將被設定成:
- tracking URL:"N/A"
- original tracking URL:"N/A"
- resource usage report:全為-1
@param:request:App報告的請求
@return:App報告
- public GetClusterMetricsResponse getClusterMetrics(GetClusterMetricsRequest request) throws YarnException, IOException;
用戶端使用該方法從RM獲得叢集的metrics(度量)。
RM響應一個GetClusterMetricsResponse類型值,該值包含YarnClusterMetrics(包含更多資訊,如叢集中當前的節點數量)。
- public GetApplicationsResponse getApplications(GetApplicationsRequest request) throws YarnException, IOException;
用戶端使用該方法從RM獲得匹配request過濾條件的App報告。
該方法響應一個GetApplicationsResponse類型的值。GetApplicationsResponse類型包含ApplicationReport。
如果使用者沒有某個App的VIEW_APP訪問權,會響應request描述的過濾過的回應。
- public GetClusterNodesResponse getClusterNodes(GetClusterNodesRequest request) throws YarnException, IOException;
用戶端使用該方法從RM獲得叢集中所有節點資訊。
- public GetQueueInfoResponse getQueueInfo(GetQueueInfoRequest request) throws YarnException, IOException;
用戶端使用該方法從RM獲得隊列資訊。
用戶端通過設定GetQueueInfoRequest,可以請求類似used/total資源、子隊列、正在啟動並執行App等資訊。
安全模式下,在響應隊列資訊之前,RM會校正用戶端是否具有存取權限。
- public GetQueueUserAclsInfoResponse getQueueUserAcls(GetQueueUserAclsInfoRequest request) throws YarnException, IOException;
用戶端使用該方法從RM獲得隊列ACL列表。
RM響應當前存在的所有隊列的ACL。
- public GetDelegationTokenResponse getDelegationToken(GetDelegationTokenRequest request) throws YarnException, IOException;
用戶端調用該方法獲得授權的令牌,使container能夠和使用對應授權令牌的服務通訊。
RM響應可以讓用戶端與對應服務通訊的授權令牌。
響應包含可以讓container用來和ClientRMService(繼承ApplicationClientProtocol)對話的令牌。
- public RenewDelegationTokenResponse renewDelegationToken(RenewDelegationTokenRequest request) throws YarnException, IOException;
更新一個已存在的授權令牌
@param:request:將被更新的授權令牌
@return:新授權令牌的失效時間
- public CancelDelegationTokenResponse cancelDelegationToken(CancelDelegationTokenRequest request) throws YarnException,IOException;
撤銷一個已存在授權令牌。
@param:request:將要撤銷的令牌
@return:空響應
+
Yarn協議ApplicationClientProtocol