Storm概述

1.1 離線計算是什麼?

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

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

1.2 流式計算是什麼

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

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

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

1.3 Storm是什麼?

Storm是一個分佈式計算框架,主要使用Clojure與Java語言編寫,最初是由NathanMarz帶領Backtype公司團隊創建,在Backtype公司被Twitter公司收購後進行開源。最初的版本是在2011年9月17日發行,版本號0.5.0。

2013年9月,Apache基金會開始接管並孵化Storm項目。Apache Storm是在Eclipse Public License下進行開發的,它提供給大多數企業使用。經過1年多時間,2014年9月,Storm項目成爲Apache的頂級項目。目前,Storm的最新版本1.1.0。

Storm是一個免費開源的分佈式實時計算系統。Storm能輕鬆可靠地處理無界的數據流,就像Hadoop對數據進行批處理;

1.4 Storm與Hadoop的區別

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

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

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

4)Storm與Hadoop的編程模型相似

 

Storm

hadoop

角色

Nimbus

JobTracker

 

Supervisor

TaskTracker

 

Worker

Child

應用名稱

Topology

Job

編程接口

Spout/Bolt

Mapper/Reducer

(1)hadoop相關名稱

Job:任務名稱

JobTracker:項目經理(JobTracker對應於NameNodeJobTracker是一個master服務,軟件啓動之後JobTracker接收Job,負責調度Job的每一個子任務task運行於TaskTracker上,並監控它們,如果發現有失敗的task就重新運行它。)

TaskTracker:開發組長(TaskTracker對應於DataNode;TaskTracker是運行在多個節點上的slaver服務。TaskTracker主動與JobTracker通信,接收作業,並負責直接執行每一個任務。)

Child:負責開發的人員

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

(2)storm相關名稱

Topology:任務名稱

Nimbus:項目經理

Supervisor:開組長

Worker:開人員

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

1.5 Storm應用場景及行業案例

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

1.5.1 運用場景

Storm能用到很多場景中,包括:實時分析、在線機器學習、連續計算等。

1)推薦系統:實時推薦,根據下單或加入購物車推薦相關商品

2)金融系統:實時分析股票信息數據

3)預警系統:根據實時採集數據,判斷是否到了預警閾值。

4)網站統計:實時銷量、流量統計,如淘寶雙11效果圖

1.6 Storm特點

1)適用場景廣泛:Storm可以適用實時處理消息、更新數據庫、持續計算等場景。

2)可伸縮性高:Storm的可伸縮性可以讓Storm每秒處理的消息量達到很高。擴展一個實時計算任務,你所需要做的就是加機器並且提高這個計算任務的並行度。Storm使用Zookeeper來協調機器內的各種配置使得Storm的集羣可以很容易的擴展。

3)保證無數據丟失:Storm保證所有的數據都被處理。

4)異常健壯:Storm集羣非常容易管理,輪流重啓節點不影響應用。

5)容錯性好:在消息處理過程中出現異常,Storm會進行重試。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章