此項目可讓您即時組織各種事件的保證處理。 例如,Storm可用於即時分析資料流、執行機器學習任務、組織連續計算、實現RPC、ETL等。 系統支援叢集、建立容錯配置、有保障的資料處理模式,並且具有高效能,足以在一個叢集節點上處理每秒百萬級以上的請求。
支援與各種隊列處理系統和資料庫技術的整合。 Storm 架構涉及使用任意複雜處理器接收和處理非結構化、不斷更新的資料流,並且能夠在不同的運算階段之間進行分區。 Twitter 收購了最初開發該框架的公司 BackType 後,該專案被移交給 Apache 社群。 在實踐中,Storm 在 BackType 中被用來分析微博中事件的反映,透過動態比較新推文和其中使用的連結(例如,評估 Twitter 上發布的外部連結或公告如何被其他參與者轉播) ) 。
Storm的功能與Hadoop平台相比,主要區別在於資料不會儲存在倉庫中,而是從外部攝取並即時處理。 Storm沒有內建儲存層,分析查詢開始應用於傳入數據,直到被取消(而Hadoop使用有限時間的MapReduce作業,Storm使用連續運行「拓撲」的想法)。 處理程序的執行可以分佈在多個伺服器上 - Storm 自動使用不同叢集節點上的執行緒並行化工作。
該系統最初是用 Clojure 編寫的,並在 JVM 虛擬機器內運作。 Apache 基金會發起了一項將 Storm 遷移到用 Java 編寫的新核心的計劃,其結果在 Apache Storm 2.0 版本中提出。 該平台的所有基本元件均以 Java 重寫。 保留了對在 Clojure 中編寫處理程序的支持,但現在以綁定的形式提供。 Storm 2.0.0需要Java 8。多執行緒處理模型已經完全重新設計,允許
新版本還提供了新類型的 Streams API,讓您可以使用函數式程式設計風格的操作來定義處理程序。 新的 API 在標準基礎 API 之上實現,並支援自動合併操作以優化其處理。 用於視窗操作的Windowing API 新增了對後端保存和復原狀態的支援。
支援在做出決策時考慮額外資源,但不限於
CPU 和內存,例如網路和 GPU 設定。 進行了大量改進以確保與平台的集成
Storm的應用領域:
- 即時處理新資料流或資料庫更新;
- 連續運算:Storm可以執行連續查詢並處理連續流,將處理結果即時交付給客戶端。
- 分散式遠端程序呼叫 (RPC):Storm 可用於提供資源密集型查詢的平行執行。 Storm 中的作業(「拓樸」)是分佈在節點之間的功能,它等待需要處理的訊息到達。 函數接收到訊息後,在本地上下文中處理並傳回結果。 使用分散式 RPC 的一個範例是並行處理搜尋查詢或對大量集合執行操作。
風暴特點:
- 簡單的程式設計模型,大大簡化了即時資料處理;
- 支援任何程式語言。 模組可用於 Java、Ruby 和 Python,由於通訊協定非常簡單,只需大約 100 行程式碼即可支持,因此很容易適應其他語言;
- 容錯性:要執行資料處理作業,您需要產生帶有程式碼的jar檔。 Storm將獨立地在叢集節點上分發這個jar文件,連接與其關聯的處理程序,並組織監控。 當作業完成後,該程式碼將在所有節點上自動停用;
- 水平可擴展性。 所有計算均以並行模式進行;隨著負載的增加,只需將新節點連接到叢集即可;
- 可靠性。 Storm 確保每個傳入訊息至少完全處理一次。 只有當訊息通過所有處理程序時沒有錯誤時,才會處理一次;如果出現問題,則會重複不成功的處理嘗試。
- 速度。 Storm 的程式碼在編寫時考慮了高效能,並使用該系統進行快速非同步訊息傳遞
零MQ .
來源: opennet.ru