元組(tuple),是訊息傳遞的基本單元,是乙個命名的值列表,元組中的字段可以是任何型別的對
象。storm使用元組作為其資料模型,元組支援所有的基本型別、字串和位元組陣列作為字段值,只要實現
型別的序列化介面就可以使用該型別的物件。元組本來應該是乙個key-value的map,但是由於各個組
件間傳遞的元組的欄位名稱已經事先定義好,所以只要按序把元組填入各個value。即可,所以元組是
乙個value的list。
流是storm的核心抽象,是乙個無界的元組系列。源源不斷傳遞的元組就組成了流,在分布式環境中並
行地進行建立和處理。
spout是拓撲的資料流的**,是乙個拓撲中產生源資料流的元件。通常情況下,spout會從外部數
據源中讀取資料,然後轉換為拓撲內部的源資料。
spout可以是可靠的,也可以是不可靠的。如果storm處理元組失敗,可靠的spout能夠重新發射,
而不可靠的spout就盡快忘記發出的元組。
spout可以發出超過乙個流。
spout的主要方法是nexttuple()。nexttuple()會發出乙個新的tuple到拓撲,如果沒有新的元組發出,
則簡單返回。
spout的其他方法是ack()和fail()。當storm檢測到乙個元組從spout發出時,ack()和fail()會被調
用,要麼成功完成通過拓撲,要麼未能完成。ack()和fail()僅被可靠的spout呼叫。irichspout是spout必須實現的介面。
在拓撲中所有處理都在bolt中完成,bolt是流的處理節點,從乙個拓撲接收資料,然後執行進行處理的
元件。bolt可以完成過濾、業務處理、連線運算、連線與訪問資料庫等任何操作。
bolt是乙個被動的角色,七介面中有乙個execute()方法,在接收到訊息後會呼叫此方法,使用者可以在其
中執行自己希望的操作。
bolt可以完成簡單的流的轉換,而完成複雜的流的轉換通常需要多個步驟,因此需要多個bolt。
bolt可以發出超過乙個的流。
拓撲(topology)是storm中執行的乙個實時應用程式,因為各個元件間的訊息流動而形成邏輯上的拓
撲結構。
把實時應用程式的執行邏輯打成jar包後提交到storm的拓撲(topology)。storm的拓撲類似於
mapreduce的作業(job)。其主要的區別是,mapreduce的作業最終會完成,而乙個拓撲永遠都在
執行直到它被殺死。乙個拓撲是乙個圖的spout和bolt的連線流分組。
Storm 程式設計模型
元組 tuple 是訊息傳遞的基本單元,是乙個命名的值列表,元組中的字段可以是任何型別的對 象。storm使用元組作為其資料模型,元組支援所有的基本型別 字串和位元組陣列作為字段值,只要實現 型別的序列化介面就可以使用該型別的物件。元組本來應該是乙個key value的map,但是由於各個組 件間傳...
Storm核心元件 程式設計模型
storm簡介 storm是用來做實時計算的框架,所以介紹storm之前需要知道什麼是流式計算。流式計算 資料實時產生 資料實時傳輸 資料實時計算 實時展示 代表技術 flume實時獲取資料 kafka metaq實時資料儲存 storm jstorm實時資料計算 redis實時結果快取 持久化儲存...
Storm架構和程式設計模型總結
1 程式設計模型 datasource 外部資料來源 spout 接受外部資料來源的元件,將外部資料來源轉化成storm內部的資料,以tuple為基本的傳輸單元下發給bolt bolt 接受spout傳送的資料,或上游的bolt的傳送的資料。根據業務邏輯進行處理。傳送給下乙個bolt或者是儲存到某種...