Heron是Apache Storm的一個直接繼承者。從架構角度來看,它與Storm截然不同,但是從API的角度看它是完全向后兼容的。
下面的章節指明了Heron和Storm的區別,描述了Heron背后的設計目標,并解釋了其架構的主要組件。
代碼庫
Heron代碼庫的詳細指南在這里。
拓撲
你可以認為一個Heron集群是一種管理流式處理實體(稱作拓撲)的生命周期機制的機制。更多信息可以查看Heron拓撲文檔。
與Apache Storm的關系
Heron是Apache Storm的直接繼承者,但是以下面兩點為構建目標:
1.通過把Storm的基于線程的計算模型替換為基于進程的模型,克服Storm的性能,可靠性,和其他缺點。
2.保留與Storm的數據模型和拓撲API的完全兼容。
關于Heron和Storm更深入的討論,查看Twitter Heron: Stream Processing at Scale論文。
Heron設計目標
隔離–拓撲應該是基于進程的而非基于線程的,而且每個進程應該獨立執行以便于調試,分析和排錯。
資源限制–拓撲應該只使用它們初始分配的那些資源,永遠不能超過那些限制。這使得Heron在共享的基礎設施上也保證安全。
兼容性–Heron與Apache Storm的API和數據模型是完全兼容的,使得開發人員便于在系統間遷移。
反壓機制–在Heron這類分布式系統中,不能保證所有的系統組件以相同的速度執行。Heron有內置的反壓機制來確保拓撲在組件緩慢的情況下可以自適應。
性能–許多Heron的設計選擇使得Heron獲得了比Storm更高的吞吐量和更低的延遲,同時還提供了增強的可配置性來微調可能的延遲/吞吐量的折中。
語義保證–Heron支持at-most-once和at-least-once兩種處理語義。
效率–Heron的構建目標是以最小的資源使用量達到上述所有目標。
拓撲組件
Heron拓撲的下列核心組件在以下小節中深入討論:
- Topology Master
- Container
- Stream Manager
- Heron Instance
- Metrics Manager
- Heron Tracker
Topology Master
Topology Master(TM)管理拓撲的整個生命周期,從提交直到最終被殺死。當==heron==部署一個拓撲時,它啟動了一個TM和多個containers。這個TM創建了一個臨時ZooKeeper節點以保證這個拓撲只有一個TM,并且這個TM可被拓撲中任何進程發現。這個TM也負責構建拓撲的物理計劃,傳遞給不同組件。

圖1 Topology Master配置
TM有多種配置參數,你可以在拓撲生命周期每一個階段進行調整。
Container每個Heron拓撲包括多個containers,每個container包含多個Heron實例,一個Stream Manager和一個Metrics Manager。Containers與拓撲的TM通信以確保拓撲形成一個全聯通圖。
作為插圖,查看上述Topology Master小節的圖片。
Stream Manager
Stream Manager(SM)管理拓撲組件間元組的路由。一個拓撲中的每個Heron實例連接到它的本地SM,同時在一個給定的拓撲中所有的SM互相連接形成了一個網絡。下面是SM網絡的圖示:
圖2 SM網絡的圖示
除了作為數據流的路由引擎外,SM還負責在需要時在拓撲中傳播反壓。下面是反壓的圖示:
圖3 反壓的圖示
上圖中,假定bolt B3(在container A中)所有輸入都來自spout S1。B3比其他組件運行更慢。結果是,container A的SM會拒絕來自容器C和D的輸入,因為那樣會導致那些容器的套接字緩沖填滿,進而導致吞吐量崩潰。
在這種情況下,Heron的反壓機制起效。容器A中的SM會向其他所有SM發送一條消息。結果是,其他SM會檢查容器的物理計劃,并切斷流入bolt B3的spouts的輸入(本例中是spout S1)。
圖4 Stream Manager2
一旦落后的bolt(B3)恢復正常,容器A的SM會通知其他SM,這個拓撲的流路由就會恢復正常。
Stream Manger配置
SM有多種配置參數,你可以在拓撲生命周期每一個階段進行調整。
Heron Instance
一個Heron Instance(HI)是一個處理一個獨立spout或bolt任務的進程,支持簡單的調試和分析。目前,Heron只支持Java,所以所有HI都是JVM進程,但是未來會改變。
Heron Instance配置
HI有多種配置參數,你可以在拓撲生命周期每一個階段進行調整。
Metrics Manager
每個拓撲運行一個Metrics Manager(MM),用于收集和導出一個container中所有組件的度量。然后把哪些度量信息路由給Topology Master和外部收集器,如Scribe, Graphite,或類似系統。
你可以通過實現自己的定制度量池(sink),使Heron支持其他系統。
集群級別組件
上述小節列出的所有組件在每個拓撲中都可以找到。下面列出的組件是集群級別的組件,在特定拓撲外起作用。
Heron CLI
Heron有一個稱作==heron==的CLI工具,用于管理拓撲。文檔參照Managing Topologies。
Heron Tracker
Heron Tracker(或Tracker)是一個關于拓撲的集群信息的集中入口,包括哪個拓撲正在運行,正在啟動,正在被殺死,等等。它依賴于與集群中拓撲所使用的相同的ZooKeeper節點,并提供了JSON REST API接口來獲取那些信息。Tracker可以運行在Heron集群內(在Heron scheduler管理的相同的機器上),也可以運行在Heron集群外。
運行包含JSON API文檔的操作說明可以參考Heron Tracker。
Heron UI
Heron UI是一個富可視化接口,可以用于與拓撲交互。通過Heron UI,可以看到集群中每個拓撲的邏輯和物理計劃的著色的展現。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:Twitter開源大數據實時分析系統Heron:Heron架構
本文網址:http://www.guhuozai8.cn/html/solutions/14019319532.html