基于Docker的京東大數據實時計算平臺
JRC用戶需求多樣復雜,用戶要求的資源配置也大小不一,系統更新部署步驟繁瑣,人工操作亦有極大的安全風險,與此同時,用戶的資源需求也越來越多,大集群支持、資源節省亦是我們應該重點關注的問題。
本文就來介紹一種我們京東為了解決上述問題而研發的基于docker的實時計算平臺。
現狀以及問題
storm集群結構:
storm拓撲結構:
storm瓶頸
從storm架構圖可以看出,storm整個集群對zookeeper的依賴非常大,無論是拓撲配置、分配信息、心跳、錯誤信息,均存儲在zookeeper中,而nimbus每次分配、更新任務,均需要從zookeeper中獲取這些信息,因此nimbus的壓力非常大,特別是當單集群worker使用量超過5000時,每次分配、更新任務所耗的時間經常需要幾分鐘,其中特別是worker心跳對zookeeper所造成的壓力影響最甚。
眾所周知,京東業務廣泛,對實時計算的需求也很大,對應所要求的集群規模也不可能小,因此京東對于上述這些問題也必須做出改變以適應自身業務的發展,其中***的改變即是對拓撲應用結構的改變,增設了TopologyMaster角色,把metrics、心跳、背壓等信息均由TopologyMaster處理,大大減輕了nimbus及zookeeper壓力,當然啦,還有很多很多很不錯的改動,但這不是本文的重點,就不在此累贅了。改變后的拓撲結構為
為響應京東集群資源上云號召,京東實時計算平臺雖然解決了大集群、資源隔離等用戶或集群所面臨的重要問題,但若直接把整個storm照搬上彈性云平臺虛擬機使用,則無法滿足資源隔離需求,屆時,集群用戶任務之間的相互影響很可能帶來各種不可預見的問題,因此我們必需對storm底層進行一次完整的改造。
技術架構實現
如圖所示,我們將Storm的Nimbus功能進行拆分,將拓撲的主要管理職能交給TopologyMaster,改造后的storm在我們內部稱之為Mars,意寓發現新大陸。
Mars主要有以下幾個特性。
1.二級調度
改造后的Nimbus只需管理TopologyMaster的調度,其它如UI訪問、命令下發、拓撲更新、分配、背壓、metrics、心跳等,均由TopologyMaster負責處理,真正實現了完整意義上的二級調度。
2.資源隔離
改造后每個docker實例下只有一個supervisor,并且每個supervisor里只用一個worker,通過每個docker一個worker來進行worker級別的資源隔離。此外,我們引入了組的概念,不用用戶申請的資源也可以統一放到一個組上,一個任務只能運行在一個組內,并通過產品化來引入權限管理,以此保證不同用戶申請的資源不會被他人占用。
3.全高可用(High Availability)
基礎進程HA
我們在每個docker實例里內置一個管理進程mars admin,并配置crontab每分鐘檢測mars admin進程狀態,保證mars admin發生異常后自動重啟。Mars admin管理著supervisor進程、進行日志服務的doctor進程、抓取日志的bee進程,這些進程的啟停與更新由mars admin來執行,保障每個docker實例里的基礎進程的HA。
Nimbus HA
我們通過Zookeeper來實現Active-Standby模式的nimbus ha,由于改造后nimbus的工作內容很少,因此單機執行完全足夠滿足需求。
TopologyMaster HA
TopologyMaster會定期與Nimbus進行心跳交互,若Nimbus檢測到TM心跳超時,則會重新調起一個新的TM,新的TM會將自身信息寫入Zookeeper中,其它Container與Supervisor將通過Zookeeper來識別到新的TM,從而保障TM的HA。
Container/Worker HA
Container會定期與TM進行交互,若TM檢測到Container心跳超時,則會重新從資源池里調起一個新的Container接管原來失效Container的任務,并把新的任務分配寫入Zookeeper中,以便其它Container識別新的Container的位置,從而保障Container的HA。
4.自動部署
由于一個docker一個worker,而一個docker實例可以理解為一個虛擬機,用戶資源申請具有隨機性、配置個性化等特點,因此對我們配置管理上必需具有自適應性。對此我們通過提供一個特殊鏡像,通過產品化把JRC與云平臺資源申請打通,并把資源配置、包部署等功能產品化,以達到自動部署的目的。
總結
基于docker的實時計算平臺是京東自行研發的全新的、自動化的實時計算平臺,它基于storm理念,通過重新設計整個底層架構及運行邏輯,并添加背壓、壓縮、限速、監控、日志等輔助功能,經過產品化并與彈性云平臺打通,達到了用戶申請即可用、配置個性化、大規模集群的要求,操作高效且自動化。
36大數據(www.36dsj.com)成立于2013年5月,是中國訪問量***的大數據網站。36大數據(微信號:dashuju36)以獨立第三方的角度,為大數據產業生態圖譜上的需求商 、應用商、服務商、技術解決商等相關公司及從業人員提供全球資訊、商機、案例、技術教程、項目對接、創業投資及專訪報道等服務。