Storm核心元件 程式設計模型

2021-08-10 11:28:01 字數 1925 閱讀 4153

storm簡介

storm是用來做實時計算的框架,所以介紹storm之前需要知道什麼是流式計算。

流式計算:資料實時產生、資料實時傳輸、資料實時計算、實時展示

代表技術:flume實時獲取資料、kafka/metaq實時資料儲存、storm/jstorm實時資料計算、redis實時結果快取、持久化儲存(mysql)。一句話總結:將源源不斷產生的資料實時收集並實時計算,盡可能快的得到計算結果。

而storm用來實時處理資料,特點:低延遲、高可用、分布式、可擴充套件、資料不丟失。提供簡單容易理解的介面,便於開發。

storm與hadoop的區別

storm用於實時計算,hadoop用於離線計算。

storm處理的資料儲存在記憶體中,源源不斷;hadoop處理的資料儲存在檔案系統中,一批一批。

storm的資料通過網路傳輸進來;hadoop的資料儲存在磁碟中。

storm與hadoop的程式設計模型相似

storm程式設計模型

流程分析:

1、storm元件由spout和bolt組成,spout元件(取源資料流的元件)首先從外部獲取資料;

2、接著spout會將資料處理後以tuple為單位發射給後續bolt元件(該元件接收資料後進行邏輯處理),至於如何分發有多種規則可選,比如隨機發或者按照指定欄位發(類似於hadoop中預設的雜湊值比上mapreduce,這種情況可以保證相同的字段必發射到某個bolt)。

3、處理邏輯1的bolt元件處理完資料後,會接著往後續處理邏輯2的bolt元件發射資料。

4、經過幾個bolt元件處理後,達到要求,將資料儲存起來,比如發到redis中。

注:如圖所示,兩個處理邏輯1 的bolt都接來自spout的資料,但兩者的處理邏輯是相同的(兩個執行緒做同樣的事情),那麼認為該bolt的併發度為

topology:storm中執行的乙個實時應用程式的名稱。(拓撲)

storm核心元件

元件介紹

1、nimbus:用來進行資源分配和任務排程的,對任務進行監控;

2、zookeeper:協調服務,儲存任務分配的資訊、心跳資訊、元資料資訊;

3、supervisor:乙個supervisor對應乙個物理機,它是當前機器上的管理者,介紹nimbus分配的任務,按需來啟動自己的worker,而workder的數量是能通過配置檔案來配置的(配置埠即可,將集群搭建的時候會說到);

4、worker:執行具體的任務的元件,其中任務型別有兩種,一種是spout任務,另一種是bolt任務,乙個worker中可能有多個spout任務和bolt任務;

5、task:worker中每乙個spout/bolt的執行緒稱為乙個task。每個task屬於某個元件併發度中的乙個,乙個task本質上是乙個執行緒。

預設情況下task=executor=thread

流式計算架構

flume實時採集,用來獲取資料,低延遲。

kafka訊息佇列,用來臨時儲存資料,低延遲。

strom實時計算,用來計算資料,低延遲。

redis實時儲存,是個記憶體資料庫,用來儲存資料,低延遲。

**產生日誌後,通過flume來獲取日誌,接著將日誌資訊儲存到kafka中,kafka將資料傳送到storm集群,strom集群根據需求來進行計算,將結果儲存到redis中。

Storm介紹及核心元件和程式設計模型

離線計算 離線計算 批量獲取資料 批量傳輸資料 週期性批量計算資料 資料展示 代表技術 sqoop批量匯入資料 hdfs 批量儲存資料 mapreduce 批量計算資料 hive 批量計算資料 azkaban oozie 任務排程 流式計算 流式計算 資料實時產生 資料實時傳輸 資料實時計算 實時展...

storm核心元件

nimbus 負責資源分配和任務排程。supervisor 負責接受nimbus分配的任務,啟動和停止屬於自己管理的worker程序。通過配置檔案設定當前 supervisor 上啟動多少個 worker worker 執行具體處理元件邏輯的程序。worker執行的任務型別只有兩種,一種是spout...

Storm核心元件介紹

nimbus 主控節點 用於接收,提交任務,來分配集群任務,集群的監控 zookeeper 儲存storm集群的資料儲存 心跳 集群狀態 nimbus任務分配到supervisor 分組策略 1 fields grouping 按照字段分組,相同字段傳送到同乙個task中 2 shuffle gro...