概覽 Storm vs. Flink

根據(jù)StackOverflow15年的回答,大意是Storm和Flink的主要差距在于high-level API抽象得更好( 包括window機(jī)制、自定義節(jié)點(diǎn)狀態(tài)), 一致性保證實(shí)現(xiàn)得更輕量。三年過去了,現(xiàn)在Storm和Flink的主要差異在哪里?本文試圖從流處理的內(nèi)部機(jī)制和運(yùn)維能力方面概括他們的異同,本文是Storm和Flink差異的開篇,在后續(xù)的文章中會(huì)選一些核心功能來詳細(xì)對(duì)比實(shí)現(xiàn)上的差異。

內(nèi)部實(shí)現(xiàn)方面:

  • 高級(jí)API: 在storm 1.0.x版本中,storm trident已經(jīng)支持StormSQL,但在最新版本1.2.2中仍然被標(biāo)注為試驗(yàn)階段。Flink提供了Batch API,相當(dāng)于Storm的Trident。
  • Window機(jī)制實(shí)現(xiàn):Flink和Storm都支持事件時(shí)間和處理時(shí)間, 都支持tumbing window和sliding window。
  • Backpressure: 由于內(nèi)部通信機(jī)制的不同,Storm和Flink的back pressure實(shí)現(xiàn)依然差異較大。Storm可以通過限制吞吐和隊(duì)列高低水位兩種方式實(shí)現(xiàn)backpressure。在實(shí)踐過程中,我們使用隊(duì)列高低水位backpressure時(shí)遇到了storm backpressure機(jī)制導(dǎo)致spout停止發(fā)送數(shù)據(jù)的問題,從STORM-1949看,似乎1.0.3+ 和1.1.0+有修復(fù)。比起Flink,Flink通過網(wǎng)絡(luò)緩存高低水位和Buffer隊(duì)列阻塞的方式實(shí)現(xiàn)backpressure。Storm可以通過metric日志查看歷史所有的backpressure情況。Flink沒有記錄歷史的backpressure, 但可以在Dashboard實(shí)時(shí)觀察backpressure情況。
  • Exactly-once保證: 從原理上來說,Strom和Flink的實(shí)現(xiàn)類似。都是基于分布式快照和兩階段提交協(xié)議,都需要上游可重播。 不同點(diǎn)在于,F(xiàn)link的Stream和Batch都支持分布式快照,而Storm只有Trident API支持。
  • 用戶自定義的節(jié)點(diǎn)狀態(tài): storm和Flink都支持用戶自定義節(jié)點(diǎn)狀態(tài), Flink支持in-memory , 本地磁盤, RocksDB而storm支持hbase和in-memory和redis作為狀態(tài)的存儲(chǔ)backend。

運(yùn)維方面:

  • metric管理:Flink的metric管理比storm更友好,支持所有metric查看、搜索及可視化 ,Storm UI只提供部分系統(tǒng)metric的查看且不支持可視化。Flink的metric支持JMX、Promethes、Graphite、StatsD、DataDog、Slf4j輸出,而Storm支持日志輸出或通過HTTP發(fā)送(格式不能自定義)。
  • 日志查看:Flink dashboard提供日志查看。 storm提供了logviewer組件,但是STORM-3238提到logviewer存在bug,實(shí)際無法查看日志結(jié)果,這個(gè)bug至今未修復(fù)。
  • Resource Mangement System支持: storm支持yarn,mesos。但storm on yarn已經(jīng)幾年沒更新,storm mesos在不同的github repository,最近一次更新在4個(gè)月前,看起來并不活躍。Flink on yarn和mesos上一次更新皆為一個(gè)月內(nèi)。(于2018.12.4觀察)
  • 調(diào)度機(jī)制: standalone模式下,Storm默認(rèn)優(yōu)先分配空閑slot最多的機(jī)器節(jié)點(diǎn)。支持多種分配機(jī)制(筆者偷懶,還沒細(xì)看) 。Flink的task->slot分配只有一種機(jī)制,支持用戶自定義slot group。

Storm在高級(jí)API層面上相對(duì)Flink落后,但不可否認(rèn)的是,Storm在努力讓差距變小。在hadoop生態(tài)支持上,storm似乎沒有進(jìn)展,而JStorm也半年未更新。Strom和JStorm也未合并完成,合并進(jìn)度見cf。而在運(yùn)維方面,storm的進(jìn)展緩慢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容