javascript
Spark streaming vs JStorm
大部分時(shí)候大家在選擇技術(shù)方案的時(shí)候還是比較迷茫,是該選擇JStorm還是Spark Streaming?
一般會(huì)流于一些并不重要問(wèn)題的討論,最后做出目光非常短淺的選擇,幾個(gè)月之后再改變技術(shù)方案。造成嚴(yán)重的開(kāi)發(fā)量的浪費(fèi),甚至拖延關(guān)鍵產(chǎn)品的上線,或者上線后問(wèn)題層出不窮,不斷和業(yè)務(wù)方妥協(xié)談判。所以,明確這兩個(gè)最主流的流計(jì)算框架的應(yīng)用場(chǎng)景至關(guān)重要,下面我說(shuō)下經(jīng)驗(yàn)之談,避免更多的人走彎路。
Spark Streaming和JStorm的本質(zhì)區(qū)別是想要解決的問(wèn)題不同:
Spark Streaming是批量處理的Spark向流計(jì)算多邁了一步;
JStorm是真正的流式流水線計(jì)算向批量計(jì)算(trident可以有部分的批量處理)多邁出了一步。
使得看似毫不相關(guān)的兩個(gè)問(wèn)題有了交集。這個(gè)交集讓很多人困惑。其實(shí)根本的問(wèn)題是真正理解流計(jì)算本質(zhì)的項(xiàng)目負(fù)責(zé)人少之又少。流計(jì)算不是實(shí)時(shí)計(jì)算。實(shí)時(shí)計(jì)算和離線計(jì)算對(duì)應(yīng),是計(jì)算的場(chǎng)景,是需求。流計(jì)算和批量計(jì)算對(duì)應(yīng)是計(jì)算的方式。流計(jì)算的本質(zhì)是:無(wú)狀態(tài)性!批量計(jì)算的本質(zhì)是有狀態(tài)計(jì)算,或者說(shuō)沒(méi)有狀態(tài)性的批量計(jì)算根本就是流計(jì)算,只是把時(shí)間維度的計(jì)算變成了空間維度的計(jì)算。而有狀態(tài)的流計(jì)算本質(zhì)也是批量計(jì)算,只是把狀態(tài)的需求藏在流式之外的閉包中。這么看了,一切了然,根本沒(méi)什么交集,判斷自己的項(xiàng)目使用哪種技術(shù)方案根本不需要問(wèn)詢(xún)需求方:你要多少的延遲?如果你只是需要低延遲,那你只是在挑戰(zhàn)現(xiàn)在計(jì)算機(jī)的計(jì)算能力。真正你要關(guān)心的是業(yè)務(wù)計(jì)算的邏輯是不是主要是無(wú)狀態(tài)的。
下面舉一個(gè)使用流計(jì)算的主要場(chǎng)景:
用戶(hù)行為log的基本sum,count,distinct需求: 這里的log數(shù)據(jù)量巨大,如果技術(shù)方案不對(duì),將對(duì)公司資源造成極大浪費(fèi)。這個(gè)需求中,sum,count都是無(wú)狀態(tài)的計(jì)算,但是distinct確是有狀態(tài)的計(jì)算,所以最好的解決方案是sum,count在JStorm中計(jì)算,distinct在Spark中計(jì)算。但是兩個(gè)系統(tǒng)同時(shí)存在會(huì)帶來(lái)很多問(wèn)題,數(shù)據(jù)落地拉起的延遲,這在阿里還是很大的瓶頸。但如果不考慮數(shù)據(jù)落地拉起,那么Storm接Spark是最好的技術(shù)方案之一。
其實(shí)還有很多項(xiàng)目都存在大量的狀態(tài)保存的需求,都是需要使用Spark Streaming來(lái)計(jì)算的。其實(shí)就算使用Spark和Storm的混合架構(gòu),數(shù)據(jù)兩次進(jìn)內(nèi)存(進(jìn)程間數(shù)據(jù)流)也是對(duì)網(wǎng)絡(luò)帶寬的浪費(fèi),所以如果在不考慮很高的實(shí)時(shí)要求的情況下,對(duì)于有狀態(tài)運(yùn)算的項(xiàng)目完全可以用Spark Streaming取代掉Storm。對(duì)于沒(méi)有狀態(tài)的項(xiàng)目,當(dāng)然可以完全用JStorm了。,
本文轉(zhuǎn)自里沖51CTO博客,原文鏈接:http://blog.51cto.com/coollast/1901331 ,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的Spark streaming vs JStorm的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: windows 8 突然不能上网 LSP
- 下一篇: 3.菜鸟教你一步一步开发 web ser