牛客網-華爲-2020屆校園招聘上機考試-軟件類機考-3

題目描述: Apache Hadoop YARN是一種新的Hadoop資源管理器,主要部件爲resource manager和node manager。resource manager使用有限狀態機維護有狀態對象的生命週期。 RmAppAttempt是resource manager中用於維護一個 Application運行嘗試的生命週期的數據結構,當某個事件發生時RmAppAttempt會根據當前狀態進行狀態遷移,同時觸發一個其餘行爲。RmAppAttempt相關狀態和事件簡述以下:node

  1. RmApp發送start事件建立RmAppAttempt,初始化後,狀態遷移爲submitted。
  2. RmAppAttempt在submitted狀態下收到資源調度器(ResourceScheduler)發來的app_accepted事件,狀態遷移爲scheduled。
  3. RmAppAttempt在scheduled狀態下收到RmContainer發來的container_allocated事件,狀態遷移爲allocated。
  4. RmAppAttempt在scheduled狀態下收到ApplicationMasterLauncher發來的launched事件,狀態遷移爲running。
  5. RmAppAttempt在running狀態下收到ResourceScheduler發來的finished事件,狀態遷移爲finished。
  6. 在RmAppAttempt運行過程當中(不含finished狀態),當收到來自客戶端的殺死應用程序的命令,RmApp向RmAppAttempt發送kill事件,RmAppAttempt收到後,狀態遷移到killed狀態。

請編寫一段程序模擬實現RmAppAttempt狀態機,接受一段連續事件輸入,輸出每一個事件處理後yarn中對應RmAppAttempt對象的狀態。數據結構

輸入描述: 模擬RmAppAttempt狀態機,接收一段連續事件輸入 輸入接口:(事件間用空格分隔) 事件源|RmAppAttempt對象|事件 事件源:RmApp、ResourceScheduler、ApplicationMasterLauncher、RmContainer 事件:start、app_accepted、container_allocated、launched、finished、killapp

輸出描述: 輸出接口:(輸出結果用分毫;分隔) RmAppAttempt對象|狀態 狀態:submitted、scheduled、allocated、running、finished、killed 無效輸入經過狀態機過濾,不須要任何輸出oop

示例1 輸入: mApp|RmAppAttempt_001|start RmApp|RmAppAttempt_002|start RmApp|RmAppAttempt_001|kill 輸出: RmAppAttempt_001|submitted;RmAppAttempt_002|submitted;RmAppAttempt_001|killed; <br><br>對象

----------------2019.03.20------------------- 上機考試的時候,由於只剩下20min左右時間作這道題,來不及寫完,只寫了一部分代碼。待以後完善了再來更新。接口

相關文章
相關標籤/搜索