Storm近年的發展

boiledwater發表於2021-09-15

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 mqnative library,容易有相容性問題,而netty作為java開發的,並且效能是zero mq2倍(在2013年的時候)。

 

0.9.2

改進了netty的使用,更好的利用執行緒、CPU和網路資源,以提高更好的效能。

改善了UI,提供了REST介面,圖形化的DAG圖。

整合的Kafka Spout

 

0.9.3

改進的kafka connector,同時支援hdfs integrationhbase Integration

通過shaded,解決了使用者包和storm包的依賴衝突,比如thriftnettyguavahttpClientzkcurator

 

0.9.40.9.50.9.6都是bugfix版本。

 

0.10.0

安全和多租戶,支援kerberosaclssl,以及與hadoop生態其他元件的安全整合,使用者的認證和資源隔離。

使用Flux宣告topology,相比以往需要以程式碼描述dag,目前可以單獨在文字中描述dag

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

下游整合,支援redis,支援jdbc

 

1.0.02016

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

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

分散式快取,支援通過supervisorhdfs來提供資料分發,使用者不用重啟作業來更新資料,只需要在命令列操作即可。

Nimbus HA,終於支援HA了,通過執行多個nimbus程式和選舉來實現HA

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

狀態支援,支援自動的checkpoint,狀態可以被儲存在記憶體或者redis中。

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

資源感知排程,通過外掛化的storm的排程外掛,目前可以支援對記憶體和cpu的單獨設定。

元組抽樣和除錯,之前使用者只能自己去顯式的增加除錯資訊,等到上線時再去掉除錯資訊,現在storm內嵌了抽樣除錯功能,只需在UI上就可以操作,元組會被UI顯示並儲存到磁碟。

動態worker profiling,支援在ui上操作workerheap dumpjstack outpuJProfile recording,相應的檔案會被儲存並可以下載。

 

1.0.11.0.21.0.31.0.41.0.51.0.6都是bugfix版本,無重大功能。

 

1.1.020173

流式SQL,通過calcitestorm終於支援了sql,在命令列中利用storm sql操作。

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

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

其他整合,支援druidopenTsdbaws kinesis,以及hdfs spout

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

 

1.1.11.1.21.1.3,都是bugfix版本,無重大功能。

 

1.2.020182

新的metric彙報,storm提供reporter彙報metricgangliagraphitejmxcsv以及console

 

1.2.11.2.21.2.3,都是bugfix版本,無重大功能。

 

2.0.020195

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

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

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

 

2.1.0201910

2.2.020206

 

相關文章