Apache Storm 2.0分散式運算系統可用

看見了光 分散式事件處理系統的重大發布 阿帕契風暴2.0,值得注意的是它過渡到用 Java 實現的新架構,而不是以前使用的 Clojure 語言。

此項目可讓您即時組織各種事件的保證處理。 例如,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。多執行緒處理模型已經完全重新設計,允許 達到 效能顯著提高(對於某些拓撲,延遲減少了 50-80%)。

Apache Storm 2.0分散式運算系統可用

新版本還提供了新類型的 Streams API,讓您可以使用函數式程式設計風格的操作來定義處理程序。 新的 API 在標準基礎 API 之上實現,並支援自動合併操作以優化其處理。 用於視窗操作的Windowing API 新增了對後端保存和復原狀態的支援。

支援在做出決策時考慮額外資源,但不限於
CPU 和內存,例如網路和 GPU 設定。 進行了大量改進以確保與平台的集成 卡夫卡。 存取控制系統已擴展為包括建立管理員群組和委託令牌的功能。 新增了與 SQL 和指標支援相關的改進。 管理員介面中出現了用於調試叢集狀態的新命令。

Storm的應用領域:

  • 即時處理新資料流或資料庫更新;
  • 連續運算:Storm可以執行連續查詢並處理連續流,將處理結果即時交付給客戶端。
  • 分散式遠端程序呼叫 (RPC):Storm 可用於提供資源密集型查詢的平行執行。 Storm 中的作業(「拓樸」)是分佈在節點之間的功能,它等待需要處理的訊息到達。 函數接收到訊息後,在本地上下文中處理並傳回結果。 使用分散式 RPC 的一個範例是並行處理搜尋查詢或對大量集合執行操作。

風暴特點:

  • 簡單的程式設計模型,大大簡化了即時資料處理;
  • 支援任何程式語言。 模組可用於 Java、Ruby 和 Python,由於通訊協定非常簡單,只需大約 100 行程式碼即可支持,因此很容易適應其他語言;
  • 容錯性:要執行資料處理作業,您需要產生帶有程式碼的jar檔。 Storm將獨立地在叢集節點上分發這個jar文件,連接與其關聯的處理程序,並組織監控。 當作業完成後,該程式碼將在所有節點上自動停用;
  • 水平可擴展性。 所有計算均以並行模式進行;隨著負載的增加,只需將新節點連接到叢集即可;
  • 可靠性。 Storm 確保每個傳入訊息至少完全處理一次。 只有當訊息通過所有處理程序時沒有錯誤時,才會處理一次;如果出現問題,則會重複不成功的處理嘗試。
  • 速度。 Storm 的程式碼在編寫時考慮了高效能,並使用該系統進行快速非同步訊息傳遞 零MQ.

來源: opennet.ru

添加評論