1. 程式人生 > >Storm學習筆記(一)

Storm學習筆記(一)

一、概述

Storm 是一個開源的分散式實時計算系統,可以簡單可靠的處理大量的資料流。Storm可以很多的 應用場景:實時分析,線上機器學習,持續計算,分散式RPC,ETL等。Storm支援水平擴充套件,具有高容錯性,保證每個訊息都會得到處理,而且處理速度很快(在一個小叢集中,每個節點每秒都可以處理數以百萬計的訊息)。Storm的部署和運維都很便捷,而且是可以使用任意的程式語言來開發應用。

二、Strom結構

  • 結構:
    storm結構稱為topology(拓撲),由Stream(資料流),spout(噴嘴-資料流的生成者,連線轉換資料流,不處理任何的業務邏輯,資料的轉換者和流的傳送者),bolt(閥門-資料流運算者,可以接受一個或者多個元件的流,進行處理,可以傳送給其他多個bolt,依此類推,bolt是一個stream的消費者也是一個stream的產生者)組成。可以組成一個複雜的資料處理流的拓撲網路。拓撲網路優勢:把大問題拆分成小步驟,把每一個小問題拆分成一個小的bolt,利用分散式的方式分佈到不同機器上並行的進行處理。
    不同於Hadoop的job,Storm中的topology會一直執行下去,除非程序被殺死獲取取消部署。

  • Stream
    Storm的核心資料結構是tuple(元組),本質上是包含了一個或者多個鍵值對的列表。Stream是由無限的tuple組成的序列。

  • Spout
    spout連線資料來源,將資料轉化成為一個個的tuple,並將tuple作為資料流進行發射。開發一個spout 的主要工作就是利用API編寫程式碼從資料來源消費資料流。
    spout的資料來源可以有很多種來源:
    web或者移動程式的點選流
    社交網路資訊
    感測器收到的資料
    應用程式產生的日誌資訊
    spout通常指負責轉換資料、發射資料,通常不會用於處理業務邏輯,從而可以很方便的實現spout的複用。

  • bolt
    主要負責資料的運算,將接收到的資料實施運算後,選擇性的輸出一個或者多個數據流。
    一個bolt可以接收多個由spout或者bolt發射的資料流,從而可以元件出複雜的資料轉換和處理網路拓撲結構。

    bolt常見的典型功能:

    • 過濾
    • 連線和聚合
    • 計算
    • 資料庫的讀寫