storm作為第一款大數據領域的流式計算引擎,在2013年推出之後風頭一時無二。後續雖然有spark streaming也作為流式計算的引擎,但storm依然在流式計算的江湖占有穩定的地比特。直到2017年,flink作為流式計算引擎异軍突起,幾年間,風雲突變,流計算言必談flink。

誠然,flink對比storm和spark streaming都有很多優勢,但作為早期storm的使用者,一直也很想了解storm這些年的發展。

通過梳理storm自己的發版說明,發現storm還是做了很多的事情,比如,支持sql,比如,支持狀態,再比如,storm竟然將開發語言從clojure改為了java,可見storm壯士斷腕的决心有多大。

但,一旦新的趨勢已經成型,則無力回天。目前storm還是能在一些細分領域有自己的一席之地,但流式計算的頭把交椅,則只能妄自垂憐了。

storm推出的第一個穩定版本是0.8版,下面從0.9版本看看storm都新增了哪些新的功能。1.0.0、1.1.0和2.0.0版本是幾個有重大功能的版本,不過總體上storm的發展已經很緩了,特別是相對flink而言。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

0.9

Storm將傳輸層變得可插拔,改變了原先只有zero mq的局面,可以設置為netty。因為zero mq是native library,容易有兼容性問題,而netty作為java開發的,並且性能是zero mq的2倍(在2013年的時候)。

0.9.2

改進了netty的使用,更好的利用線程、CPU和網絡資源,以提高更好的性能。

改善了UI,提供了REST接口,圖形化的DAG圖。

整合的Kafka Spout。

0.9.3

改進的kafka connector,同時支持hdfs integration和hbase Integration。

通過shaded,解决了用戶包和storm包的依賴沖突,比如thrift,netty,guava,httpClient,zk和curator。

0.9.4和0.9.5、0.9.6都是bugfix版本。

0.10.0

安全和多租戶,支持kerberos,acl,ssl,以及與hadoop生態其他組件的安全整合,用戶的認證和資源隔離。

使用Flux聲明topology,相比以往需要以代碼描述dag,目前可以單獨在文本中描述dag。

流式寫入hive,hive 0.13版本支持流式寫入,storm自己實現了一個bolt來流式寫入hive。

下遊整合,支持redis,支持jdbc。

1.0.0,2016年

改進的性能,這個版本的storm比之前的版本要快16倍,延遲减少了60%,即使考慮不同的用戶場景和外部服務依賴,對大多數用戶場景而言也提供了相比之前3倍的性能

心跳機制,引入pacemaker來實現server和worker之間的心跳,而不是之前通過zk來進行,當集群規模較大時,zk往往會成為瓶頸。

分布式緩存,支持通過supervisor和hdfs來提供數據分發,用戶不用重啟作業來更新數據,只需要在命令行操作即可。

Nimbus HA,終於支持HA了,通過運行多個nimbus進程和選舉來實現HA。

原生窗口,支持滑動窗口和翻滾窗口,基於事件個數或者時間。

狀態支持,支持自動的checkpoint,狀態可以被保存在內存或者redis中。

背壓監測,之前為了控制spout的速度,只能設置topology.max.spout.pending,目前通過監測task的buffer size,可以動態的控制spout的發射速度。

資源感知調度,通過插件化的storm的調度插件,目前可以支持對內存和cpu的單獨設置。

元組抽樣和調試,之前用戶只能自己去顯式的增加調試信息,等到上線時再去掉調試信息,現在storm內嵌了抽樣調試功能,只需在UI上就可以操作,元組會被UI顯示並保存到磁盤。

動態worker profiling,支持在ui上操作worker的heap dump,jstack outpu和JProfile recording,相應的文件會被保存並可以下載。

1.0.1,1.0.2,1.0.3,1.0.4,1.0.5,1.0.6都是bugfix版本,無重大功能。

1.1.0,2017年3月

流式SQL,通過calcite,storm終於支持了sql,在命令行中利用storm sql操作。

Kafka整合,支持kafka 0.10及以後版本。

PMML支持,通過支持predictive model markup language來支持用訓練機器學習中的模型。

其他整合,支持druid,openTsdb,aws kinesis,以及hdfs spout。

Topology提交,之前只支持uber包提交,現在可以通過-jar來指定依賴提交。

1.1.1,1.1.2,1.1.3,都是bugfix版本,無重大功能。

1.2.0,2018年2月

新的metric匯報,storm提供reporter匯報metric到ganglia,graphite,jmx,csv以及console。

1.2.1,1.2.2,1.2.3,都是bugfix版本,無重大功能。

2.0.0,2019年5月

以Java進行重構,storm之前是用clojure寫成的,clojure語言成為很多人參加storm社區的障礙,從這裏之後,歡迎更多的人參與社區的代碼貢獻。

更高的性能,通過重構更精簡的線程模型、極快的消息傳遞模型以及輕量級的背壓模型,它旨在突破吞吐量、延遲和能耗的界限,同時保持向後兼容性。Apache Storm 2.0 是第一個打破 1 微秒延遲障礙的流媒體引擎。

JVM要求,擯弃了之前的java7,從storm 2.0開始,要求使用java8的環境。

2.1.0,2019年10月

2.2.0,2020年6月

Storm近年的發展的更多相關文章

  1. Storm(一)Storm的簡介與相關概念

    一.Storm的簡介 官網地址:http://storm.apache.org/ Storm是一個免費開源.分布式.高容錯的實時計算系統.Storm令持續不斷的流計算變得容易,彌補了Hadoop批處理 ...

  2. VR與AR的發展趨勢分析

    概要 你是否想象過與神秘的深海生物近距離接觸?你是否夢想過穿戴鋼鐵俠那樣的超先進科技裝備成為超級英雄?你又是否幻想過與夢中的女神面對面的交流?這些可能在以前都只能是存在於腦海中的幻想,可是在如今有一項 ...

  3. 三:基於Storm的實時處理大數據的平臺架構設計

    一:元數據管理器==>元數據管理器是系統平臺的“大腦”,在任務調度中有著重要的作用[1]什麼是元數據?--->中介數據,用於描述數據屬性的數據.--->具體類型:描述數據結構,數據的 ...

  4. ElasticSearch詳解與優化設計

    簡介 概念 安裝部署 ES安裝 數據索引 索引優化 內存優化 1簡介 ElasticSearch(簡稱ES)是一個分布式.Restful的搜索及分析服務器,設計用於分布式計算:能够達到實時搜索,穩定, ...

  5. BI案例:BI在連鎖零售業應用(ZT)【轉】

    第一部分:連鎖零售企業上BI的必要性. 目前國內的連鎖零售行業的發展趨勢,呈現出產業規模化,經營業態多樣化,管理精細化的特點.所謂管理精細化就是"精耕細作搞管理,領先一步訂系 統" ...

  6. BI案例:BI在連鎖零售業應用(ZT)

    第一部分:連鎖零售企業上BI的必要性. 目前國內的連鎖零售行業的發展趨勢,呈現出產業規模化,經營業態多樣化,管理精細化的特點.所謂管理精細化就是"精耕細作搞管理,領先一步訂系統". ...

  7. 我經曆的IT公司面試及離職感受(轉)

    畢業後幾年一直待在廣州,覺得這是一個比較生活化及務實的城市,其互聯網公司和相應的投融資環境都不如北深上活躍,大大小小的面試也有幾十個,有點規模的公司應該都面試過了,面試一般會見到主力技術人員,技術主管 ...

  8. MES制造執行系統啟動篇

    美國先進制造研究機構(AMR)定義了MES為:"比特於上層的計劃管理系統與底層的工業控制之間的面向車間層的管理信息系統",它為操作人員/管理人員提供計劃的執行.跟踪以及所有資源(人. ...

  9. Nginx的知識分享,感興趣的可以看一下

    我幹了五年了,我想把我的經驗跟大家分享一下,歡迎大家閱讀. 1. Nginx入門簡介 WEB服務器也稱為WWW(WORLD WIDE WEB)服務器,主要功能是提供網上信息瀏覽服務. WWW 是 In ...

  10. Video Target Tracking Based on Online Learning—深度學習在目標跟踪中的應用

    摘要 近年來,深度學習方法在物體跟踪領域有不少成功應用,並逐漸在性能上超越傳統方法.本文先對現有基於深度學習的目標跟踪算法進行了分類梳理,後續會分篇對各個算法進行詳細描述. 看上方給出的3張圖片,它們 ...

隨機推薦

  1. POJ2417 Discrete Logging

    本文版權歸ljh2000和博客園共有,歡迎轉載,但須保留此聲明,並給出原文鏈接,謝謝合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  2. Android之完美退出方法

    為什麼要寫這篇文章? 網上有很多種退出方法,可實際上很多方法都不通用(在某個版本下可用,到了另一個版本就不行),或者方法的實際效果根本就和其描述不符(也不知道那些發帖的人測沒測試過). 但我們的需求又 ...

  3. JS設置Cookie,及COOKIE的限制

    在Javascript脚本裏,一個cookie 實際就是一個字符串屬性.當你讀取cookie的值時,就得到一個字符串,裏面當前WEB頁使用的所有cookies的名稱和值.每個cookie除了 name ...

  4. Java 內部類 this

    內部類訪問外部類的一個例子: public class Abc { private class Bc { public void print() { System.out.println(Abc.th ...

  5. 對jsp的初步了解及生成war包(一)

    1.jsp與html的區別 最簡單的說:jsp是動態網頁,html是靜態網頁 HTML(Hypertext Markup Language)文本標記語言,它是靜態頁面,和JavaScript一樣解釋性 ...

  6. Command "python setup.py egg_info" failed with error code 1 in C:\Users\w5659\AppData\Local\Temp\pip-install-t7uomu4r\xa dmin\

    Error msg: C:\Users\w5659>pip install xadmin Collecting xadmin Using cached https://files.pythonh ...

  7. 你的項目真的需要Session嗎? redis保存session性能怎麼樣?

    在web開發中,Session這個東西一直都很重要,至少伴隨我10年之久, 前一段時間發生一個性能問題,因為Redis session 問題,後來想想 其實我的項目session 是不需要的. 先看看 ...

  8. IOS 設備備份文件詳解 (二)

    這篇主要講解如何解析Manifest.mbdb文件. 使用二進制工具打開這個文件,文件的頭6個字節是固定的,相當於是文件的一種標識 後面的內容是一個一個的項,可以使用一個循環來讀取文件,一個一個解析. ...

  9. The confusion about jsp four scopes and ServletContext,HttpSession,HttpServletReqest,PageContext

    The jsp four scopes are same with ServletContext,HttpSession,HttpServletRequest,PageContext? How ser ...

  10. [BZOJ1003](ZJOI 2006) 物流運輸trans

    [題目描述] 物流公司要把一批貨物從碼頭A運到碼頭B.由於貨物量比較大,需要n天才能運完.貨物運輸過程中一般要轉停好幾個碼頭.物流公司通常會設計一條固定的運輸路線,以便對整個運輸過程實施嚴格的管理和跟 ...