天天看點

Twitter Heron 實時流處理系統簡介

        Twitter Heron是Twitter公司開源的一個實時的、容錯的、分布式的流資料處理系統。Heron是Apache Storm的直接繼承者。它繼承了Apache Storm的實時性、容錯、低延遲的特性。并且它保留了Apache Storm的Topology API,使用者可以直接将Apache Storm上建構的Topology項目,直接轉移到Apache Storm中運作而不需要做其他更改。它廣泛應用于實時分析、連續計算、複雜事件處理和一些實時性要求的應用。相比于Apache Storm,它提供了擴充性更好,調試能力更強,性能更好,管理更容易等特性。它能夠每秒鐘百萬級别的吞吐量和毫秒級别的延遲。目前Twitter Heron被Twitter公司廣泛使用。

Twitter Heron 實時流處理系統簡介

圖4-xxx Twitter Heron系統架構,來自SIGMOD 15的Twitter Heron論文

        Twitter Heron相比于Apache Storm,Heron有如下幾個優點。首先,與storm不同Heron Instance是一個獨立的jvm程序,可能是spout也可能是bolt,這樣比較清晰,更容易debug,不會像storm一樣很多spout、bolt在一個jvm程序内運作。其次TwitterHeron中Topology隻會使用他們初始配置設定的資源,永遠不能超過他們資源限制。TwitterHeron利用YARN進行資源排程。然後,Heron有内置的反壓機制來確定拓撲在元件緩慢的情況下可以自适應。最後Heron中對系統設計進行更好的優化,使得Heron相比Apache Storm有更高的吞吐量和更低的延遲。

        圖4顯示了Twitter Heron的整體架構。使用者通過用戶端将Topology送出給Twitter Heron。Topology Master管理了Topology整個生命周期,它包括對系統資源進行統一配置設定,将Topology中每個Instance通過封裝到一個Container中去執行。Stream Manager主要是管理tuple的路由,每個HeronInstance連接配接到自己本地的StreamManager,每個StreamManager和它相關的StreamManager連接配接接收、發送tuple。與storm不同Heron Instance是一個獨立的jvm程序,可能是spout也可能是bolt,這樣比較清晰,更容易debug,不會像storm一樣很多spout、bolt在一個jvm程序内運作。HeronInstance 有兩個線程來運作,其中一個線程負責資料的輸入輸出和通信。還有一個線程負責運作使用者邏輯代碼。Container是YARN中的資源抽象,它封裝了某個節點上的多元度資源,如記憶體、CPU等。并且多個HeronInstance運作在YARNContainer上,有YARNContainer進行統一管理。每個Container中運作一個Metrics Manager(MM),用于收集和導出一個container中所有元件的Metrics資訊。這些Metrics資訊包括系統Metrics和Topology的使用者Metrics。然後這些Metrics資訊可以路由給Topology Master和一些外部Metrics收集器,如Scribe等系統。

        Twitter Heron使用了更加先進的設計,并且它能夠友善的調試程式,它還能夠相容Apache Storm 的Topology API。相比Apache Storm,它提供更好的吞吐量和低延遲的性能。

繼續閱讀