流式計算基礎-1-1
本文介紹:Storm是什麼
目標:
通過該課程的學習能夠了解離線計算與流式計算的區別、掌握Storm框架的基礎知識、瞭解流式計算的一般架構圖。
大綱:
- 離線計算是什麼?
- 流式計算是什麼?
- 流式計算與離線計算的區別?
- Storm是什麼?
- Storm與Hadoop的區別?
- Storm的應用場景及行業案例
- Storm的核心元件(重點掌握)
- Storm的程式設計模型(重點掌握)
- 流式計算的一般架構圖(重點掌握)
-
一、離線計算是什麼?
離線計算:批量獲取資料、批量傳輸資料、週期性批量計算資料、資料展示
代表技術: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的區別
- Storm用於實時計算,Hadoop用於離線計算。
- Storm處理的資料儲存在記憶體中,源源不斷;Hadoop處理的資料儲存在檔案系統中,一批一批。
- Storm的資料通過網路傳輸進來;Hadoop的資料儲存在磁碟中。
- 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是個記憶體資料庫,用來儲存資料。