程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> Storm系統架構以及代碼結構學習

Storm系統架構以及代碼結構學習

編輯:SyBase教程

Storm系統架構以及代碼結構學習


前言

什麼是storm,storm是做什麼的,一個簡單的描述,你可以理解為是一個“准實時”的Hadoop,Hadoop是專門做的是離線數據處理,而storm則彌補了Hadoop在這方面的不足,他是一個實時數據處理的平台。至於Storm的各種由來,就不一一在這裡廢話了,之前我寫的某篇文章講述了部分的Storm的代碼結構,詳情點擊這裡

Storm的總體架構

先來了解一下Storm的整體結構,Storm中的幾個關鍵詞Topology,Spout,Bolt,Worker,Executor,Task,暫且就這些吧。這些關鍵詞所代表的對象是在2種節點中運行的,一個叫Nimbus節點,還有一個叫Supervisor節點,Storm采用的也是master/slave的架構,所以也會存在單點的問題。Nimbus節點和Supervisor都能快速失敗並恢復,而且他們是無狀態的,在其間會利用存儲在Zookeeper中的元數據。在每個Supervisor節點中,可以啟很多的Worker,再在每個Worker中,可以啟很多的Executor執行器,每個執行器內部又會劃分出許多的Task,Task是系統允許的最小單位。下面是其中的一張截圖。

\

Storm的整體結構運行圖如下,Spout是數據源,像水龍頭一般不斷的產生數據,發送到Bolt節點中執行。

\

Storm的元數據存儲

Storm采用Zookeeper來存儲Nimbus,Supervisor以及內部的各個Worker之間的元數據,所以可以進行異常恢復。在Zookeeper中是如何存儲的呢,答案是存在ZNode中,ZNode是一種樹型結構,他有根節點,葉子節點等等,而Storm的這些數據是存在於其中的葉子節點中,最後是根據路徑做區分和數據讀取的。相當於是從根路徑開始往下尋找,類似於Trie樹的構造。下面是一張簡圖。

源碼中的Clojure部分代碼之後,你應該會看到許多函數式編程的痕跡。Clojure代碼實現的主要功能包括Nimbus,Supervisor,worker等作業執行相關的操作,當然還有涉及到Zookeeper相關的數據交換操作等。而java部分的代碼則是實現了許多的Storm的高級屬性,比如Trident部分的代碼,Trident是Storm對實時消息處理的更高層的抽象,我至今也還沒有用過。如果是一般的作業執行,用到的核心代碼其實還是用Clojure寫的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved