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


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

  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、kill

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

示例1
輸入:
mApp|RmAppAttempt_001|start RmApp|RmAppAttempt_002|start RmApp|RmAppAttempt_001|kill
輸出:
RmAppAttempt_001|submitted;RmAppAttempt_002|submitted;RmAppAttempt_001|killed;


----------------2019.03.20-------------------
上機考試的時候,因為只剩下20min左右時間做這道題,來不及寫完,只寫了一部分代碼。待之后完善了再來更新。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM