Storm架構執行原理

2021-10-04 07:27:50 字數 2469 閱讀 3339

storm集群主要包含nimbus和supervisor兩部分,集群協調依賴於外部zookeeper。

storm特性:

1、分布式計算

2、高效能、低延時

3、可擴容

4、高度容錯

5、資料可靠(ack)

nimbus:集群管理中心,支援ha,負責接收客戶端提交的拓撲(topology),將任務分發給supervisor,並監控supervisor的執行狀態。

supervisor:集群worker節點,負責接收nimbus分配的任務,並監控自身任務執行狀態,向nimbus進行匯報。

zookeeper:整個集群的協調者,nimbus和supervisor通訊是通過zookeeper進行的,集群中心跳資訊、狀態資訊、配置資訊和任務資訊都儲存在zookeeper中。

1、客戶端編寫storm應用程式,編譯打包成storm可識別的topology圖,上傳到nimbus主節點

2、nimbus將topology解析,把任務分發到各個supervisor節點

3、supervisor接收到任務後啟動executor,執行task任務

在storm中,任務是以topology形式提交的。storm按照拓撲結構進行解析和任務劃分,生成相應的執行計畫,最終將各個任務分發給worker節點。

乙個topology由spout、tuple、bolt三部分構成。

spout:資料來源。通常情況下都是在spout中從外部接入資料,將資料轉化成storm中的資料流

tuple:資料流。topology中傳遞的資料。

bolt:資料處理節點。實現業務處理邏輯的地方。

ack是storm中完整的訊息容錯機制,ack的使用和其實現演算法是storm最突出的亮點。

由spout流出的每乙個tuple,直到最後bolt處理結束,都會被ack標記為成功或失敗,失敗資料可重新返回spout進行處理,保障資料的可靠性,這就是storm中ack機制。

訊息語義:

best effort:多次執行。使用ack

at least once:至少執行一次。關閉ack

exactly once:正好執行一次,通過trident api實現。

fully processed:即tuple成功處理,乙個tuple在拓撲樹中每乙個環節都被處理。

ack機制中:

1、在規定時間內,如果spout收到ack響應,則認為改tuple被成功處理

2、在規定時間內,spout沒有收到ack響應或收到fail響應,則認為該tuple處理失敗

3、超過規定時間預設標記為失敗,通過config.topology_message_timeout_secs 設定超時時間

ack機制除了資料容錯之外,還可以用作限流:

當bolt處理速度跟不上spout生產速度時,可以通過設定pending數量來進行限流,當spout有等於或超過pending數的tuple沒有收到ack或fail響應時,跳過執行nexttuple, 從而限制spout傳送資料。

config.topology_max_spout_pending設定pending數量

注意:當spout標記tuple為fail時,不會自動重新傳送失敗的資料,需要在spout中自己獲取資料進行手動傳送。

要在程式中實現ack機制,需要進行以下配置:

1、設定config.setnumackers最少使用1個acker

2、在spout中需要重寫ack和fail方法,如果資料來源是訊息佇列,失敗就重新將訊息推送到訊息佇列中,否則需要本地快取spout產生的tuple,成功處理的要從快取移除

3、spout發射tuple的時候指定messageid

3、在bolt中完成處理tuple時,執行outputcollector.ack(tuple), 當失敗處理時,執行outputcollector.fail(tuple)

4、在bolt中發射訊息時指定tuple血緣關係(anchoring ), outputcollector.emit(tuple,new values(「new tuple」)),如果不想手動標記anchoring、ack、fail,可實現basebasicbolt,內部自動實現了這些功能

ack關閉:

1、關閉acker監控執行緒,設定config.topology_ackers為0

2、在spout中emit訊息時不指定messageid

3、在botl中emit訊息時不指定anchoring

水平一般,能力有限,大資料小學生一枚。文章主要用於個人學習和總結,如果能給他人帶來幫助,純屬意外。

storm架構及原理

storm 架構與原理 1.1 storm是什麼 1.2 storm 與傳統的大資料 2.1 hadoop架構簡介 2.2 hadoop架構的瓶頸 3.1 storm架構的設計 storm架構中使用spout bolt程式設計模型來對訊息進行流式處理 訊息流是storm中對資料的基本抽象,乙個訊息流...

Spark SQL執行原理和架構

一 spark sql執行架構 spark sql對sql語句的處理和關係型資料庫類似,即詞法 語法解析 繫結 優化 執行。spark sql會先將sql語句解析成一棵樹,然後使用規則 rule 對tree進行繫結 優化等處理過程。spark sql由core catalyst hive hive ...

storm系統架構學習

storm架構如下圖所示 1 主控節點 master node 執行storm nimbus後台服務的節點 nimbus 它是storm系統的中心,負責接收使用者提交的作業 如同spark submit一樣 即為jar包形式儲存的topology 通過zookeeper向每個工作節點分配處理任務 有...