在hadoop應用,随着業務名額的疊代,而使其日趨複雜化的時候,管理hadoop的相關應用會變成一件頭疼的事情,如:作業的依賴排程,任
務的運作情況的監控,異常問題的排查等,這些問題會是的我們日常的工作變得複雜。那麼,在沒有條件和精力去開發一套排程系統的情況下,我們去選擇一款第三
方開源的排程系統,來盡量減輕和降低我們日常工作的複雜度,也是極好的。今天,筆者給大家比較幾種常見的排程系統,供大家去選擇。
一文當中,介紹相關oozie的排程,如何去排程hadoop的相關,大家可以從部落格的文中所描述的内容看出,配置的過程略顯繁瑣和複雜,配置相關的排程
它是一個hadoop的作業平台,從hadoop任務的調試運作到生産任務的周期排程,它支援任務的整個生命周期。從其功能來看,它支援以下任務:
hadoop的mapreduce任務排程運作
hive任務的排程運作
shell任務的運作
hive中繼資料的可視化展示查詢及資料預覽
hadoop任務的自動排程
其開源位址在github上面,可在github搜尋zeus,即可找到相關工程。zeus是由阿裡巴巴開源出來的,文檔在github上描述的也比較詳細,其相關安裝步驟及使用方法可參考github上的官方文檔,這裡就不多做贅述了。
這是由linkedin建立的一個批處理工作流,用于跑hadoop的jobs。azkaban提供了一個易于使用的使用者界面來維護和跟蹤你的工作流程。其可視化界面如下所示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuITM4YTN5MDN10SN3ITNxMDM4EDNxETM1EDMy0SN0cjN2YzLcFTM1EDMy8CX1QzN2YjNvw1ZvxmYvwVbvNmLzd2bsJmbj5SNxAjMzV2Zh1Wavw1LcpDc0RHaiojIsJye.png)
另外,github上貢獻的azkaban排程系統的源碼量不大,做二次開發難度不大。其功能點涉及以下内容:
相容hadoop版本
易用的web ui
簡單的web和http工作流的上傳
項目工作區
工作流排程
子產品化和插件化
認證和授權
使用者行為跟蹤
郵件告警失敗和成功
sla告警
重新開機失敗的jobs
azkaban的設計之初主要是基于可用性的考慮。在linkedin運作的有些年頭了,一直驅動着它們的hadoop和資料倉庫。
它由3個關鍵部分組成,分别是:
關系行資料庫(mysql):azkaban使用mysql去做一些狀态的存儲。azkabanwebserver和azkabanexecutorserver這兩個服務都需要接入到db庫當中。
azkabanwebserver:webserver使用db的原因如下:
項目管理:對項目權限和上傳檔案的管理。
執行流程狀态:對正在執行的程式進行跟蹤。
之前的流程或jobs:通過搜尋先前的工作和流程,去通路它們的日志檔案。
排程程式:保持預定的工作狀态。
sla:保持所有的sla規則。
azkabanexecutorserver:另外,executorserver使用db的原因如下所示:
擷取項目:從資料庫中檢索項目檔案。
執行工作流或jobs:檢索和更新流的資料,并執行。
logs:存儲作業的輸出日志,并将其流入資料庫。
不同的依賴進行交流:如果一個流在不同的執行器上運作,它将從資料庫中取取狀态。
三者的關系圖,如下所示:
關于其相關配置和使用,官方給出的文檔比較詳細,這裡就不多贅述了。大家可以到github去閱讀官方給出的文檔。
關于排程系統的選擇,這裡就比較了這3種,大家可以适情況而定,另外,若是條件允許或是有精力也可以參考這些排程系統的原理,開發一套滿足自己目前業務的排程系統,也不失為一種選擇。
這篇部落格就和大家分享到這裡,如果大家在研究學習的過程當中有什麼問題,可以加群進行讨論或發送郵件給我,我會盡我所能為您解答,與君共勉!