Strom簡介及處理過程

簡介

Storm是Twitter開源的一個類似於Hadoop的實時數據處理框架。

Storm能實現高頻數據和大規模數據的實時處理。

官網資料顯示storm的一個節點1秒鐘能夠處理100萬個100字節的消息([email protected]的CPU,24GB的內存)


Storm與Hadoop比較

數據來源:HADOOP處理的是HDFS上TB級別的歷史數據數據,STORM處理的是實時新增的某一筆實時數據;

處理過程:HADOOP是分MAP階段到REDUCE階段,STORM是由用戶定義處理流程,流程中可以包含多個步驟,每個步驟可以是數據源(SPOUT)或處理邏輯(BOLT);

是否結束:HADOOP最後是要結束的,STORM是沒有結束狀態,到最後一步時,就停在那,直到有新數據進入時再從頭開始;

處理速度:HADOOP是以處理HDFS上TB級別數據爲目的,處理速度慢,STORM是隻要處理新增的某一筆數據即可,可以做到很快;

適用場景:HADOOP是在處理批量數據時用的,不講究時效性,STORM是處理某一新增數據時用的,講時效性。


Storm中的一些核心概念

Topology:一個實時計算應用程序邏輯上被封裝在Topology對象中,類似Hadoop中的作業。與作業不同的是,Topology會一直運行直到顯示的殺死它。

Nimbus:負責資源分配和任務調度,類似Hadoop中的JobTracker。

Supervisor:負責接受Nimbus分配的任務,啓動和停止屬於自己管理的Worker進程,類似與Hadoop中的TaskTracker。

Worker:運行具體處理組件邏輯的進程。

Executor:Strom0.8之後,Executor爲Worker進程中的具體的物理線程,同一個Spout/Bolt的Task可能會共享一個物理線程,一個Executor中只能運行隸屬於同一個Spout/Bolt的Task。

Task:每一個Spout/Bolt具體要做的工作,也是各個節點之間進行分組的單位。

Spout:在Topology中產生源數據的組件。通常Spout獲取數據源(如Kafka、MQ等讀取數據),然後調用nextTuple函數,發射數據供Bolt消費。

Bolt:在Topology中接受Spout的數據然後執行處理的組件。Bolt可以執行過濾、函數操作、合併、寫數據庫等任何操作。Bolt在接收到消息後會調用execute函數,用戶可以在其中執行自己想要的操作。

Tuple:消息傳遞的基本單元。

Stream:源源不斷傳遞的Tuple組成了Stream。

Stream分組:即消息的分區(partition)方法。Storm中提供若干種實用的分組方式,包括Shuffle、Fields、All、Global、None、Direct和Local or shuffle等。


Stream處理過程


一個Spout可以發送給多個Bolt,一個Bolt可以接受多個Spout。如下圖:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章