1. 程式人生 > >Storm學習筆記 - Storm初識

Storm學習筆記 - Storm初識

Storm學習筆記 - Storm初識

1. Strom是什麼?

  • Storm是一個開源免費的分散式計算框架,可以實時處理大量的資料流。

2. Storm的特點

  • 高效能,低延遲。
  • 分散式:可解決資料量大,單機搞不定的場景。
  • 可擴充套件:隨著業務的發展,資料量越來越大,系統可以水平擴充套件。
  • 容錯:單個節點掛了,不影響整個應用。

3. Storm與其他框架的比較

3.1 Storm和Hadoop的比較

  • Storm用於實時計算,Hadoop用於離線計算。
  • Storm處理的資料儲存在記憶體中,源源不斷。Hadoop處理的資料儲存在檔案系統中,一批一批。
  • Storm與Hadoop的程式設計模型相似。

3.2 Storm與Spark streaming的比較

  • Spark streaming採用小批量的方式,提高了吞吐效能。
  • 處理資料的粒度變大,導致Spark streaming的資料延時不如Storm,Spark streaming是秒級返回結果(與設定的batch間隔有關),Storm則是毫秒級。

4. Storm叢集架構

  • Nimbus:Storm叢集的主節點,負責分發使用者程式碼,指派給具體的Supervisor節點上的Worker節點,去執行Topology對應的元件(Spout/Bolt)的Task。
  • Supervisor,Storm叢集的從節點,負責管理執行在Supervisor節點上的每一個Worker的啟動和終止。可以通過配置項決定在一個Supervisor上最大可以執行多少個Slot,每個Slot通過埠號來唯一標識,一個埠號對應一個Worker程序。
  • Worker:執行處理具體元件邏輯的程序,Worker執行的程序只有兩種,一種是Spout程序,一種是Bolt程序。
  • Task:Worker中每一個Spout/bolt的執行緒稱為一個Task。
  • Zookeeper:用來協調Nimbus和Supervisor,如果Supervisor因故障出現問題而無法執行Topology,Nimbus會第一時間感知到,並重新分配Topology到其他可用的Supervisor上執行。

5. Storm程式設計模型

  • Topology:Storm中執行的一個實時應用程式的名稱。將 Spout、 Bolt整合起來的拓撲圖。定義了 Spout和Bolt的結合關係、併發數量、配置等等。
  • Spout:在一個topology中獲取源資料流的元件。通常情況下spout會從外部資料來源中讀取資料,然後轉換為topology內部的源資料。
  • Bolt:接受資料然後執行處理的元件,使用者可以在其中執行自己想要的操作。
  • Tuple:一次訊息傳遞的基本單元,理解為一組訊息就是一個Tuple。
  • Stream:Tuple的集合。表示資料的流向。

6. 總結

  • 拓撲(Topology):打包好的實時應用計算任務,同Hadoop的MapReduce任務相似。
  • 元組(Tuple):是Storm提供的一個輕量級的資料格式,可以用來包裝你需要實際處理的資料。
  • 流(Streams):資料流(Stream)是Storm中對資料進行的抽象,它是時間上無界的tuple元組序列(無限的元組序列)。
  • Spout(噴嘴):Storm中流的來源。Spout從外部資料來源,如訊息佇列中讀取元組資料並吐到拓撲裡。
  • Bolts:在拓撲中所有的計算邏輯都是在Bolt中實現的。
  • 任務(Tasks):每個Spout和Bolt會以多個任務(Task)的形式在叢集上執行。
  • 元件(Component):是對Bolt和Spout的統稱。
  • 流分組(Stream groupings):流分組定義了一個流在一個消費它的Bolt內的多個任務(task)之間如何分組。
  • 可靠性(Reliability):Storm保證了拓撲中Spout產生的每個元組都會被處理。
  • Workers(工作程序):拓撲以一個或多個Worker程序的方式執行。每個Worker程序是一個物理的Java虛擬機器,執行拓撲的一部分任務。
  • Executor(執行緒):是1個被worker程序啟動的單獨執行緒。每個executor只會執行1個topology的1個component。
  • Nimbus:Storm叢集的Master節點,負責分發使用者程式碼,指派給具體的Supervisor節點上的Worker節點,去執行Topology對應的元件(Spout/Bolt)的Task。
  • Supervisor:Storm叢集的從節點,負責管理執行在Supervisor節點上的每一個Worker程序的啟動和終止。