(二十三)初識Storm

      上幾章博客已經介紹了hadoop以及它的相關生態圈內容,並且通過搜狗的階段項目完成了練習,已經初步完成了對大數據的一個入門。爲了擴展知識內容,現在開始學習storm相關的知識。

1、離線計算是什麼?

離線計算:批量獲取數據、批量傳輸數據、週期性批量計算數據、數據展示

代表技術:Sqoop批量導入數據、HDFS批量存儲數據、MapReduce批量計算數據、Hive批量計算數據、***任務調度

1,hivesql

2、調度平臺

3、Hadoop集羣運維

4、數據清洗(腳本語言)

5、元數據管理

6、數據稽查

7、數據倉庫模型架構

2、流式計算是什麼

流式計算:數據實時產生、數據實時傳輸、數據實時計算、實時展示

代表技術:Flume實時獲取數據、Kafka/metaq實時數據存儲、Storm/JStorm實時數據計算、Redis實時結果緩存、持久化存儲(mysql)。


一句話總結:將源源不斷產生的數據實時收集並實時計算,儘可能快的得到計算結果

3、離線計算與實時計算的區別

最大的區別:實時收集、實時計算、實時展示

4、Storm是什麼?

Flume實時採集,低延遲

Kafka消息隊列,低延遲

Storm實時計算,低延遲

Redis實時存儲,低延遲

Storm用來實時處理數據,特點:低延遲、高可用、分佈式、可擴展、數據不丟失。提供簡單容易理解的接口,便於開發。

海量數據?數據類型很多,產生數據的終端很多,處理數據能力增強

5、Storm與Hadoop的區別

  • Storm用於實時計算,Hadoop用於離線計算。
  • Storm處理的數據保存在內存中,源源不斷;Hadoop處理的數據保存在文件系統中,一批一批。
  • Storm的數據通過網絡傳輸進來;Hadoop的數據保存在磁盤中。
  • Storm與Hadoop的編程模型相似

Job:任務名稱

JobTracker:項目經理

TaskTracker:開發組長、產品經理

Child:負責開發的人員

Mapper/Reduce:開發人員中的兩種角色,一種是服務器開發、一種是客戶端開發

Topology:任務名稱

Nimbus:項目經理

Supervisor:開組長、產品經理

Worker:開人員

Spout/Bolt:開人員中的兩種角色,一種是服務器開發、一種是客戶端開發

6、Storm應用場景及行業案例

Storm用來實時計算源源不斷產生的數據,如同流水線生產。

6.1、運用場景

  • 日誌分析

海量日誌中分析出特定的數據,並將分析的結果存入外部存儲器用來輔佐決策。

  • 管道系統

將一個數據從一個系統傳輸到另外一個系統,比如將數據庫同步到Hadoop

  • 消息轉化器

將接受到的消息按照某種格式進行轉化,存儲到另外一個系統如消息中間件

6.2、典型案列

  • 一淘-實時分析系統:實時分析用戶的屬性,並反饋給搜索引擎

        最初,用戶屬性分析是通過每天在雲梯上定時運行的MR job來完成的。爲了滿足實時性的要求,希望能夠實時分析用戶的行爲日誌,將最新的用戶屬性反饋給搜索引擎,能夠爲用戶展現最貼近其當前需求的結果。

  • 攜程-網站性能監控:實時分析系統監控攜程網的網站性能

       利用HTML5提供的performance標準獲得可用的指標,並記錄日誌。Storm集羣實時分析日誌和入庫。使用DRPC聚合成報表,通過歷史數據對比等判斷規則,觸發預警事件。

  • 阿里媽媽-用戶畫像:實時計算用戶的興趣數據

      爲了更加精準投放廣告,阿里媽媽後臺計算引擎需要維護每個用戶的興趣點(理想狀態是,你對什麼感興趣,就向你投放哪類廣告)。用戶興趣主要基於用戶的歷史行爲、用戶的實時查詢、用戶的實時點擊、用戶的地理信息而得,其中實時查詢、實時點擊等用戶行爲都是實時數據。考慮到系統的實時性,阿里媽媽使用Storm維護用戶興趣數據,並在此基礎上進行受衆定向的廣告投放。

7、Storm核心組件(重要)

 

  • Nimbus:負責資源分配和任務調度。
  • Supervisor:負責接受nimbus分配的任務,啓動和停止屬於自己管理的worker進程。—通過配置文件設置當前supervisor上啓動多少個worker。
  • Worker:運行具體處理組件邏輯的進程。Worker運行的任務類型只有兩種,一種是Spout任務,一種是Bolt任務。
  • Task:worker中每一個spout/bolt的線程稱爲一個task. 在storm0.8之後,task不再與物理線程對應,不同spout/bolt的task可能會共享一個物理線程,該線程稱爲executor。

8、Storm編程模型(重要)

 

  • Topology:Storm中運行的一個實時應用程序的名稱。(拓撲)
  • Spout:在一個topology中獲取源數據流的組件。

通常情況下spout會從外部數據源中讀取數據,然後轉換爲topology內部的源數據。

  • Bolt:接受數據然後執行處理的組件,用戶可以在其中執行自己想要的操作。
  • Tuple:一次消息傳遞的基本單元,理解爲一組消息就是一個Tuple。
  • Stream:表示數據的流向。

 

北京地鐵線路

storm對比地鐵

總框架模型

9、流式計算一般架構圖(重要)

 

  • 其中flume用來獲取數據。
  • Kafka用來臨時保存數據。
  • Strom用來計算數據。
  • Redis是個內存數據庫,用來保存數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章