Storm介紹及核心組件和編程模型


離線計算

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

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

 

流式計算

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

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

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

 

離線計算和實時計算的區別

實時收集、實時計算、實時展示

 

Storm

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

 

Storm和Hadoop的區別

(storm實時流處理,每秒可處理數萬條消息;hadoop批處理,HDFS和MapReduce處理大量數據通常需要幾分鍾到幾小時)

Storm用於實時計算,Hadoop用於離線計算。

Storm處理的數據保存在內存中,源源不斷Hadoop處理的數據保存在文件系統中,一批一批。

Storm的數據通過網絡傳輸進來;Hadoop的數據保存在磁盤中。

StormHadoop編程模型相似

Job:任務名稱

JobTracker:項目經理

TaskTracker:開發組長、產品經理

Child:負責開發的人員

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

 

Topology:任務名稱

Nimbus:項目經理

Supervisor:發組長、產品經理

Worker:發人員

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

 

Storm應用場景

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

日志分析

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

管道系統

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

消息轉化器

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

 

Storm核心組件(重要

Nimbus(主節點):負責資源分配和任務調度

Supervisor(從節點):負責接受nimbus分配的任務,啟動和停止屬於自己管理的worker進程---通過配置文件設置當前supervisor上啟動多少個workerworker的數量根據端口號來的!

Worker(進程)運行具體處理組件邏輯的進程(其實就是一個JVM)。Worker運行的任務類型只有兩種,一種是Spout任務,一種是Bolt任務。

Task(線程)worker中每一個spout/bolt的線程稱為一個task. storm0.8之后,task不再與物理線程對應,不同spout/bolttask可能會共享一個物理線程,該線程稱為executortask=線程=executor

Zookeeper(分布式協調服務) :保存任務分配的信息、心跳信息、元數據信息。

 

Storm編程模型(重要

TopologyStorm中運行的一個實時應用程序的名稱。(拓撲)

Spout:在一個topology中獲取源數據流的組件。   通常情況下spout會從外部數據源中讀取數據,然后轉換為topology內部的源數據。

Bolt:接受數據然后執行處理的組件,用戶可以在其中執行自己想要的操作。

Tuple:一次消息傳遞的基本單元,理解為一組消息就是一個Tuple

Stream:表示數據的流向。

 

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

 

其中Flume用來獲取數據

l Kafka用來臨時保存數據

l Strom用來計算數據

l Redis是個內存數據庫,用來保存數據

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM