1. 程式人生 > >流式計算框架之Strom基本概念

流式計算框架之Strom基本概念

轉載於 http://www.cnblogs.com/xia520pi/p/4816507.html,謝謝

首先我們通過一個Storm和Hadoop的對比表格,來了解Storm中的基本概念。


接下來我們再來具體看一下這些概念。

  • Nimbus:負責資源分配和任務排程。
  • Supervisor:負責接受nimbus分配的任務,啟動和停止屬於自己管理的worker程序。
  • Worker:執行具體處理元件邏輯的程序。
  • Task:worker中每一個spout/bolt的執行緒稱為一個task。在Storm0.8之後,task不再與物理執行緒對應,同一個spout/bolt的task可能會共享一個物理執行緒,該執行緒稱為executor。

  下面這個圖描述了以上幾個角色之間的關係。



圖1.2 Storm角色間關係

  • Topology:Storm中執行的一個實時應用程式,因為各個元件間的訊息流動形成邏輯上的一個拓撲結構。
  • Spout:在一個topology中產生源資料流的元件。通常情況下spout會從外部資料來源中讀取資料,然後轉換為topology內部的源資料。Spout是一個主動的角色,其介面中有個nextTuple()函式,Storm框架會不停地呼叫此函式,使用者只要在其中生成源資料即可。
  • Bolt:在一個topology中接受資料然後執行處理的元件。Bolt可以執行過濾、函式操作、合併、寫資料庫等任何操作。Bolt是一個被動的角色,其介面中有個execute(Tuple input)函式,在接受到訊息後會呼叫此函式,使用者可以在其中執行自己想要的操作。
  • Tuple:一次訊息傳遞的基本單元。本來應該是一個key-value的map,但是由於各個元件間傳遞的tuple的欄位名稱已經事先定義好,所以tuple中只要按序填入各個value就行了,所以就是一個value list.
  • Stream:源源不斷傳遞的tuple就組成了stream。

  Hadoop是實現了MapReduce的思想,將資料切片計算來處理大量的離線資料。Hadoop處理的資料必須是已經存放在hdfs上或者類似hbase的資料庫中,所以Hadoop實現的時候是通過移動計算到這些存放資料的機器上來提高效率的;而Storm不同,Storm是一個流計算框架,處理的資料是實時訊息佇列中的,所以需要我們寫好一個topology邏輯放在那,接收進來的資料來處理,所以是通過

移動資料平均分配到機器資源來獲得高效率。

  Hadoop的優點是處理資料量大(瓶頸是硬碟和namenode,網路等),分析靈活,可以通過實現dsl,mdx等拼接Hadoop命令或者直接使用hive,pig等來靈活分析資料。適應對大量維度進行組合分析。其缺點就是慢:每次執行前要分發jar包,Hadoop每次map資料超出闕值後會將資料寫入本地檔案系統,然後在reduce的時候再讀進來。

  Storm的優點是全記憶體計算,因為記憶體定址速度是硬碟的百萬倍以上,所以Storm的速度相比較Hadoop非常快(瓶頸是記憶體,cpu)。其缺點就是不夠靈活:必須要先寫好topology結構來等資料進來分析。

  Storm 關注的是資料多次處理一次寫入,而 Hadoop 關注的是資料一次寫入,多次查詢使用。Storm系統執行起來後是持續不斷的,而Hadoop往往只是在業務需要呼叫資料。