storm是乙個免費並開源的分布式實時計算系統。利用storm可以很容易做到可靠地處理無限的資料流,像hadoop批量處理大資料一樣,storm可以實時處理資料。storm簡單,可以使用任何程式語言。
storm有如下特點:
程式設計簡單:開發人員只需要關注應用邏輯,而且跟hadoop類似,storm提供的程式設計原語也很簡單
高效能,低延遲:可以應用於廣告搜尋引擎這種要求對廣告主的操作進行實時響應的場景。
分布式:可以輕鬆應對資料量大,單機搞不定的場景
可擴充套件: 隨著業務發展,資料量和計算量越來越大,系統可水平擴充套件
容錯:單個節點掛了不影響應用
訊息不丟失:保證訊息處理
storm計算模型:
有向無環圖的實現:
對於storm
實時計算邏輯的封裝即,由一系列通過資料流相互關聯的spout
、bolt
所組成的拓撲結構
生命週期:此拓撲只要啟動就會一直在集群中執行,直到手動將其
kill
,否則不會終止
(區別於
mapreduce
當中的job,mr
當中的job
在計算執行完成就會終止)
tuple –
元組:stream中最小資料組成單元
stream –
資料流從spout
中源源不斷傳遞資料給
bolt
、以及上乙個
bolt
傳遞資料給下乙個
bolt
,所形成的這些資料通道即叫做
stream
stream
宣告時需給其指定乙個
id(預設為
default
),實際開發場景中,多使用單一資料流,此時不需要單獨指定streamid
storm練習**:
求sum= 1+2+3+....
新增依賴:
org.apache.storm
storm-core
1.2.2
provided
public class test
}
public class wordsumbolt extends baserichbolt
/*** 獲取資料(有必要的話,向後繼續傳送資料)
*/@override
public void execute(tuple tuple)
@override
public void declareoutputfields(outputfieldsdeclarer outputfieldsdeclarer)
}
public class wordsumspout extends baserichspout
/*** 採集並向後推送資料
*/@override
public void nexttuple()
/*** 向接收資料的邏輯單元傳送資料的欄位名稱
統計單詞出現個數 :
public class test
}
public class wcountbolt extends baserichbolt
/*** 獲取tuple中的每個單詞,並按照單詞統計出現的次數
*/@override
public void execute(tuple tuple) else
system.out.println(word +"--------"+map.get(word));
}@override
public void declareoutputfields(outputfieldsdeclarer declarer)
}
public class wcspout extends baserichspout ;
random r = new random();
@override
public void open(map map, topologycontext topologycontext, spoutoutputcollector collector)
// 隨機向後傳送字串
@override
public void nexttuple()
@override
public void declareoutputfields(outputfieldsdeclarer declarer)
}
public class wspiltbolt extends baserichbolt
/*** 獲取每一行並切割
*/@override
public void execute(tuple tuple)
}@override
public void declareoutputfields(outputfieldsdeclarer declarer)
}
一 Storm簡介與核心概念
1 storm簡介 storm是乙個開源的 分布式實時計算系統。能夠實現高頻資料和大規模資料的實時處理。2 核心概念 topology 拓撲,將整個流程串起來 計算拓撲,由spout和bolt組成的 stream 流,資料流,水流 訊息流,抽象概念,沒有邊界的tuple構成,乙個stream由多個t...
Storm 實踐記錄
storm 各個組成部分結構 各個元件的作用 主節點 nimbus 分配任務和系統資源 從節點 supervisor 執行任務的節點 worker 多執行緒的程序,worker中每個執行緒叫做乙個executor executor 物理上的執行緒 task 任務,型別 spout 採集資料 bolt...
storm學習筆記(一)
1 storm介紹 storm特點 storm保障每個訊息至少能得到一次完整處理。任務失敗時,它會負責從訊息源重試訊息 系統的設計保證了訊息能夠得到快速的處理,使用 mq作為其底層訊息佇列 2 總體架構 storm中涉及的術語 3 storm在zookeeper中的資料存貯及使用 1 存貯 stor...