Storm是一個分佈式流處理框架。算法
Word count做爲分佈式的"hello world", 這裏由word count引出Storm的topology概念。編程
有一系列DNS查詢,須要統計被查詢最屢次的域名框架
從函數式編程的角度來說,能夠把算法概括爲下圖分佈式
即爲
h ( g ( f (data) ) )函數式編程
轉換爲Storm topology函數
Topology:拓撲結構oop
Spout:spout做爲整個拓撲的數據源,一個topology中可能存在多個數據源。上圖中即爲提供DNS查詢的數據源spa
Bolt: bolt是topology中的基本數據處理單元。上圖中,即爲f,g,h三個函數。.net
Tuple: 基本數據單元。例 (1.1.1.1, "foo.com")orm
Stream: 無止境一串的tuple流 ... (2.2.2.2, 「bar.net」), (3.3.3.3, 「foo.com」), (4.4.4.4, 「foo.com」) ...
Shuffle grouping
隨機分配tuple給後續節點
Fields grouping
根據定義的fields字段,將相同key值的字段分配給同一後續節點。經常使用於統計同一key值的數量
All grouping
Hadoop主要用來處理batch(批處理)數據, Storm主要用來處理Stream(流式)數據。 主要區別以下圖所示: