由Word Count入門Apache Storm

Storm是一個分佈式流處理框架。算法

入門

Word count做爲分佈式的"hello world", 這裏由word count引出Storm的topology概念。編程

問題

有一系列DNS查詢,須要統計被查詢最屢次的域名框架

clipboard.png

從函數式編程的角度來說,能夠把算法概括爲下圖分佈式

clipboard.png

即爲
h ( g ( f (data) ) )函數式編程

轉換爲Storm topology函數

clipboard.png

概念

  • 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」) ...

Stream Grouping 經常使用分組方式

  • Shuffle grouping
    隨機分配tuple給後續節點

clipboard.png

  • Fields grouping
    根據定義的fields字段,將相同key值的字段分配給同一後續節點。經常使用於統計同一key值的數量

clipboard.png

  • All grouping

clipboard.png

Storm和Hadoop的區別

Hadoop主要用來處理batch(批處理)數據, Storm主要用來處理Stream(流式)數據。 主要區別以下圖所示:
圖片描述

相關文章
相關標籤/搜索