apache storm 是由twitter開源的分布式實時計算系統。storm可以非常容易並且可靠的處理無限的資料流。對比hadoop的批處理,storm是乙個實時的、分布式的、具備高容錯的計算系統。storm應用可以使用不同的程式語言來進行開發。
-storm基本體系結構圖-
nimbus和supervisor之間的通訊依靠zookeeper來完成,並且nimbus程序和supervisor都是快速失敗和無狀態的。所有的狀態要麼在zookeeper裡面,要麼在本地磁碟上。這就意味著你可以用kill -9 來殺死 nimbus和supervisor程序,然後在重啟它們,它們可以繼續工作,就像什麼也沒發生。這個設計使storm具有非常高的穩定性。
核心概念
在storm中有一些核心基本概念,包括topology、nimbus、supervisor、worker、executor、task、spout、bolt、tuple、stream、stream分組(grouping)等。
topology: 乙個實時計算應用程式邏輯上被封裝在topology物件中,類似hadoop中的作業。與作業不同的是,topology會一直執行直到顯式地殺死它。
nimbus: 負責資源分配和任務排程,類似hadoop中的jobtracker。
supervisor:負責接受nimbus分配的任務,啟動和停止屬於自己管理的worker程序,類似hadoop中的tasktracker。
worker: 執行具體處理元件邏輯的程序。
executor: storm 0.8之後,executor為worker程序中的具體的物理執行緒,同乙個spout/bolt的task可能會共享乙個物理執行緒,乙個executor中只能執行隸屬於同乙個spout/bolt的task。
task: 每乙個spout/bolt具體要做的工作,也是各個節點之間進行分組的單位。
spout: 在topology中產生源資料流的元件。通常spout獲取資料源的資料,然後呼叫nexttuple函式,發射資料供bolt消費。
bolt: 在topology中接受spout的資料然後執行處理的元件,bolt可以執行過濾,函式操作,合併,寫資料庫等任何操作。bolt在接收到訊息後會呼叫execute函式,使用者可在其中執行自己想要的操作。
tuple: 訊息傳遞的單元。
stream: 源源不斷傳遞的tuple組成了stream。
stream分組:即訊息的分割槽(partition)方法。storm中提供若干種實用的分組方式。包括shuffle、fields、all、global、none、direct、local or shuffle等。
關於分割槽方式的內容,下期繼續,敬請期待……
storm的stream分組方式詳解
kafka的基本體系結構
使用場景 大資料 資料量和速率激增,資料型別越來越複雜 應用開發 訊息引擎,應用解耦,分布式儲存,流處理 topic 主題 訊息的邏輯分類 客戶端 細分為生產者 朝主題傳送訊息 消費者 讀取主題的訊息 服務端 broker 1 處理客戶端傳送和提供消費支援 2 訊息持久化 訊息架構 1,乙個主題可以...
Intel多核程式設計培訓的基本體系
上週去上海intel參加了乙個多核程式設計的技術培訓。一般來說大公司的專項技術培訓都經過精心的設計,體系比較完整,知識點覆蓋比較全,強調實驗和動手環節。intel這次的多核技術培訓也是這樣,從執行緒基礎知識到多執行緒程式設計的方法模型,從openmp到vtune工具,體系還是很完整的,試驗環節設計得...
商業智慧型軟體的基本體系結構
商業智慧型軟體可以收集 管理 分析和轉化企業中現有的資料,使這些資料成為可用的資訊。讓企業更輕鬆地獲取洞察力,幫助企業做出明智的經營決策。這些資料報括來自企業業務系統的訂單 庫存 交易賬目 客戶和 商,還有來自行業和競爭對手的其他資料,以及來自其他外部環境的各種資料。商業智慧型軟體輔助操作層的決策,...