002 storm基本概念

2021-07-05 16:49:00 字數 1541 閱讀 2426

1、storm集群

1.1 storm集群和hadoop集群對比

在hadoop集群上執行mapreduce jobs,在storm集群上執行topologies。 jobs和topologies有很大的不同。乙個關鍵的區別是,乙個mapreduce jobs最終可完成,然後a topology處理過程永遠執行(除非kill it)

1.2 在storm集群中有兩類節點:master節點和多個worker節點

每個master節點以守護進行執行,該守護程序稱為「nimbus」,nimbus 類似於hadoop's jobtracker"節點,主要負責在集群中**分發,任務分配,監控。

每個worker節點以守護進行執行,該守護程序稱為supervisor,乙個正在執行的topology是由多台機器多個worker程序處理

1.3 nimbus 和  the supervisors 之間的協作

通過zookeeper集群完成 ,nimbus守護程序和supervisor守護程序是無狀態的;所有的狀態被儲存到zookeeper集群或者本地磁碟上。這就意味著你通過kill -9 殺死nimbus或者 supervisors程序 ,然後重新啟動他們,不會受到任何的影響。這種設計說明storm集群式非常穩定。 

為實現在storm集群上實時計算,首先要建立topologies。乙個topology就是乙個計算的圖形。在乙個topology中每個節點含有業務處理邏輯,topology主要把每個處理節點連線起來。集群模式下執行topology,需要把你的**打成jar檔案,然後通過命令執行。該命令格式: storm jar all-my-code.jar backtype.storm.mytopology arg1 arg2

backtype.storm.mytopology:定義topology和提交topology到nimbus節點;

storm jar : 主要連線nimbus 和上傳jar檔案;

3、streams

在storm核心概念就是stream。乙個stream就是乙個tuples的序列

總結如下:

topologies 用於封裝乙個實時計算應用程式的邏輯,類似於hadoop的mapreduce job

stream 訊息流,是乙個沒有邊界的tuple序列,這些tuples會被以一種分布式的方式並行地建立和處理

spouts 訊息源,是訊息生產者,他會從乙個外部源讀取資料並向topology裡面面發出訊息:tuple

bolts 訊息處理者,所有的訊息處理邏輯被封裝在bolts裡面,處理輸入的資料流並產生新的輸出資料流,可執行過濾,聚合,查詢資料庫等操作

task 每乙個spout和bolt會被當作很多task在整個集群裡面執行,每乙個task對應到乙個執行緒.

stream groupings 訊息分發策略,定義乙個topology的其中一步是定義每個tuple接受什麼樣的流作為輸入,stream grouping就是用來定義乙個stream應該如何分配給bolts們.

Storm基本概念

原文 寫在前面的話 請允許我廢話幾句。這個系列的文章發布的時間是在我完成了storm的專案開發之後才找出來時間寫的,在研究storm過程中,國內較好的參考文章實在有限,大多是入門和概念剖析。storm的googlegroup對於新手來說實在不友好。有經驗人士都不願意回答新手的一些 愚蠢 的問題。現在...

Storm 基本概念

storm 是乙個免費並開源的分布式實時計算系統。利用storm 可以很容易做到可靠地處理無限的資料流,像hadoop 批量處理大資料一樣,storm 可以實時處理資料。storm 集群的master 節點,負責分發使用者 指派給具體的supervisor 節點上的worker 節點,去執行topo...

Storm基本概念

storm為分布式實時計算提供了一組通用原語,可被用於 流處理 之中,實時處理訊息並更新資料庫。這是管理佇列及工作者集群的另一種方式。storm也可被用於 連續計算 continuous computation 對資料流做連續查詢,在計算時就將結果以流的形式輸出給使用者。它還可被用於 分布式rpc ...