1. 程式人生 > >流式計算基礎-1-1

流式計算基礎-1-1

 

本文介紹:Storm是什麼

目標:

         通過該課程的學習能夠了解離線計算與流式計算的區別、掌握Storm框架的基礎知識、瞭解流式計算的一般架構圖。

大綱:

  1. 離線計算是什麼?
  2. 流式計算是什麼?
  3. 流式計算與離線計算的區別?
  4. Storm是什麼?
  5. Storm與Hadoop的區別?
  6. Storm的應用場景及行業案例
  7. Storm的核心元件(重點掌握)
  8. Storm的程式設計模型(重點掌握)
  9. 流式計算的一般架構圖(重點掌握)

 

 

 

  • 一、離線計算是什麼?

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

         代表技術:Sqoop批量匯入資料、HDFS批量儲存資料、MapReduce批量計算資料、Hive批量計算資料、***任務排程

1,hivesql

2、排程平臺

3、Hadoop叢集運維

4、資料清洗(指令碼語言)

5、元資料管理

6、資料稽查

7、資料倉庫模型架構

 

  • 二、流式計算是什麼

         流式計算:資料實時產生、資料實時傳輸、資料實時計算、實時展示

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

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

 

  • 三、離線計算與實時計算的區別

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

 

  • 四、Storm是什麼?

         Flume實時採集,低延遲

         Kafka訊息佇列,低延遲

         Storm實時計算,低延遲

         Redis實時儲存,低延遲

 

         Storm用實時處理資料,特點:低延遲、高可用、分散式、可擴充套件、資料不丟失。提供簡單容易理解的介面,便於開發。

 

        

         海量資料?資料型別很多,產生資料的終端很多,處理資料能力增強

        

        

  • 五、Storm與Hadoop的區別

  1. Storm用於實時計算,Hadoop用於離線計算。
  2. Storm處理的資料儲存在記憶體中,源源不斷;Hadoop處理的資料儲存在檔案系統中,一批一批。
  3. Storm的資料通過網路傳輸進來;Hadoop的資料儲存在磁碟中。
  4. Storm與Hadoop的程式設計模型相似

Job:任務名稱

JobTracker:專案經理

TaskTracker:開發組長、產品經理

Child:負責開發的人員

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

 

Topology:任務名稱

Nimbus:專案經理

Supervisor:開組長、產品經理

Worker:開人員

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

 

  • 六、Storm應用場景及行業案例

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

  • 6.1、運用場景

  • 日誌分析

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

  • 管道系統

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

  • 訊息轉化器

將接受到的訊息按照某種格式進行轉化,儲存到另外一個系統如訊息中介軟體

  • 6.2、典型案列

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

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

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

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

  • 阿里媽媽-使用者畫像:實時計算使用者的興趣資料

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

        

  • 七、Storm核心元件(重要)

 

  • Nimbus:負責資源分配和任務排程。
  • Supervisor:負責接受nimbus分配的任務,啟動和停止屬於自己管理的worker程序。---通過配置檔案設定當前supervisor上啟動多少個worker
  • Worker:執行具體處理元件邏輯的程序。Worker執行的任務型別只有兩種,一種是Spout任務,一種是Bolt任務。
  • Task:worker中每一個spout/bolt的執行緒稱為一個task. 在storm0.8之後,task不再與物理執行緒對應,不同spout/bolt的task可能會共享一個物理執行緒,該執行緒稱為executor。

 

  • 八、Storm程式設計模型(重要)

 

 

  • Topology:Storm中執行的一個實時應用程式的名稱。(拓撲)
  • Spout:在一個topology中獲取源資料流的元件。

通常情況下spout會從外部資料來源中讀取資料,然後轉換為topology內部的源資料。

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

 

 

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

 

  • 其中flume用來獲取資料。
  • Kafka用來臨時儲存資料。
  • Strom用來計算資料。
  • Redis是個記憶體資料庫,用來儲存資料。