Storm基本原理

2021-09-23 21:29:26 字數 1388 閱讀 2088

過去的十年見證了資料處理領域的一次革命。mapreduce,hadoop以及其它相關的技術使得我們可以儲存與處理的資料達到了過去想都不敢想的量級。不幸的是,這些資料處理技術並不能用於實時系統。本身這些技術也不是為了用於實時系統而生的。我們也沒有任何方式可以將hadoop改造以用於實時系統;實時資料處理與批處理截然不同。

然而大規模實時資料處理的需求與日俱增,缺少乙個「實時的hadoop」已經成為資料處理領域最大的缺憾。

storm填補了這個缺憾。

在storm出現以前,通常你需要手工建立乙個佇列節點與工作節點的網路來進行實時資料處理。工作節點處理佇列中的訊息,更新資料庫,傳送訊息到另乙個佇列以進行進一步的處理。這樣的方式有許多問題:

編碼枯燥。你需要花費很多時間去做配置,訊息要傳送到哪,怎麼部署佇列節點,怎麼部署工作節點。而你真正關心的實時處理邏輯只佔你**的一小部分。

系統脆弱。容錯性太差,你需要自己去注意每乙個佇列節點和工作節點的狀態。

不易擴充套件。當單個節點的訊息吞吐量過高時,你需要對訊息進行切分。對於其他工作節點則需要進行重新配置,這樣才能將訊息傳送給新的節點。其中引入的節點變更都有可能失敗。

儘管在處理大量訊息時,佇列節點與工作節點這樣的處理方式運轉得不是太好,但訊息處理無疑是實時計算的基本正規化。問題是應該怎麼樣才能讓訊息處理可以做到不丟資料,可以處理超大規模的資料,並且可以很簡單的來使用和運維?

storm可以解決這些問題。

storm暴露了一系列的原語用於實時計算。就像mapreduce極大的簡化了並行批處理程式的編寫,storm的原語也極大的簡化了並行實時計算程式的編寫。

storm的關鍵特性:

使用場景非常廣泛。storm可以用於處理訊息,更新資料庫(流式處理),對資料流進行連續查詢並將結果流式的返回給客戶端(連續計算),分布式rpc等等。少量的原語滿足了大量的使用需求。

擴充套件性。storm可以擴充套件到每秒鐘可處理大量的訊息。要擴充套件乙個拓撲,你只需要新增機器並修改拓撲的設定就可以。作為例子,storm的乙個初始應用,在擁有10個節點的集群上面,每秒鐘可以處理1,000,000條訊息,其中還包括了每秒鐘幾百次的資料庫訪問。通過使用zookeeper,storm的集群可以擴充套件到乙個更大的規模。

可靠性。乙個實時系統必須能夠保證所有的資料都被成功處理,如果無法保證將會限制它的使用場景。storm可以保證每一條訊息都被處理。這是storm與其他系統,比如s4,最大的不同。

魯棒性。hadoop是出了名的難管理,而storm不一樣。讓使用者盡可能不費力氣的來管理storm集群是storm專案的乙個目標。

容錯性。當計算過程中發生了故障,如果有必要的話storm會重新分配任務。storm會確保計算任務一直進行下去,除非你去終止它。

程式語言無關性。擁有魯棒性與擴充套件性的實時處理系統不應該侷限在單一的平台上。可以使用任何的語言來定義storm的拓撲邏輯和元件,這使得幾乎所有人都可以使用storm。

storm 文件(2) 基本原理

storm 文件 2 基本原理 過去十年間,很多資料處理解決方案不停湧現。mapreduce hadoop以及相關技術使得儲存和處理資料在規模上是以前不可想象的。不幸的是,這些資料處理技術沒有實時系統,同時上述技術也沒打算這樣做。沒有辦法使hadoop程式設計實時系統 實時資料處理與批處理有一系列不...

Storm基本原理概念及基本使用

離線計算 批量獲取資料 批量傳輸資料 週期性批量計算資料 資料展示 代表技術 sqoop批量匯入資料 hdfs批量儲存資料 mapreduce批量計算資料 hive批量計算資料 流式計算 資料實時產生 資料實時傳輸 資料實時計算 實時展示 代表技術 flume實時獲取資料 kafka metaq實時...

Storm基本原理概念及基本使用

離線計算 批量獲取資料 批量傳輸資料 週期性批量計算資料 資料展示 代表技術 sqoop批量匯入資料 hdfs批量儲存資料 mapreduce批量計算資料 hive批量計算資料 流式計算 資料實時產生 資料實時傳輸 資料實時計算 實時展示 代表技術 flume實時獲取資料 kafka metaq實時...