Storm精华问答 | 为什么这么多人用Spark而不用Storm?
戳藍(lán)字“CSDN云計(jì)算”關(guān)注我們哦!
Storm被業(yè)界稱為實(shí)時(shí)版Hadoop。隨著越來越多的場景對Hadoop的MapReduce高延遲無法容忍,以及大數(shù)據(jù)實(shí)時(shí)處理解決方案的應(yīng)用日趨廣泛,目前已是分布式技術(shù)領(lǐng)域最新爆發(fā)點(diǎn),而Storm更是流計(jì)算技術(shù)中的佼佼者和主流。
1
Q:為什么這么多人用Spark而不用Storm?
A:Storm和Spark Streaming都是分布式流處理的開源框架。區(qū)別如下:
1、處理延時(shí)和吞吐量
Storm處理的是每次傳入的一個(gè)事件,Spark Streaming是處理某個(gè)時(shí)間段窗口內(nèi)的事件流,Storm處理一個(gè)事件可以達(dá)到秒內(nèi)的延遲,而Spark Streaming則有幾秒鐘的延遲。因此,Spark Streaming比Storm的延時(shí)更長,但是吞吐量比Storm大。
2、容錯(cuò)、數(shù)據(jù)保證
Spark Streaming在容錯(cuò)方面提供了對狀態(tài)計(jì)算的更好的支持。在Storm中,任一條單獨(dú)的記錄在經(jīng)過系統(tǒng)時(shí)必須可以被追蹤到,所以Storm僅保證所有記錄都會至少處理一次,但是從錯(cuò)誤中恢復(fù)過來時(shí)允許出現(xiàn)重復(fù)記錄。這意味著可變狀態(tài)有可能被錯(cuò)誤的更新兩次。
3、支持的API
Storm(由Closure語言開發(fā)的)支持JAVA編程,Spark支持Scala編程,也支持java開發(fā)。
如果需要秒內(nèi)的延遲,Storm是一個(gè)不錯(cuò)的選擇,而且沒有數(shù)據(jù)丟失。如果需要有狀態(tài)的計(jì)算,而且要完全保證每個(gè)事件只被處理一次,Spark Streaming則更好。Spark Streaming編程邏輯也可能更容易,因?yàn)樗愃朴谂幚沓绦?Hadoop),特別是在你使用批次(盡管是很小的)時(shí)。
Q:在一臺機(jī)器上安裝Storm客戶端,這臺客戶端會變成一臺Supervisor嗎? 客戶端與Storm集群是什么關(guān)系?因?yàn)榭磞aml配置里只配了nimbus,而沒有說明哪臺是Supervisor,是不是就是默認(rèn)有這樣配置的都是Supervisor呢?
A:yaml是Storm配置,除去配置的nimbus角色,所有機(jī)器,只要選擇啟動supervisor,就可以作為supervisor,安裝客戶端成功后,角色是根據(jù)是否啟動角色選項(xiàng)決定的。
Q:這兩天一直在玩storm,在本地運(yùn)行起來了,可是一旦切換到集群環(huán)境,所有的寫操作都無法完成,無論是通過socket還是文件讀寫還是數(shù)據(jù)庫讀寫,到最后提交到集群后,運(yùn)行起來都會出現(xiàn)
filename not matched: resources/** kill 10936: 沒有那個(gè)進(jìn)程這樣的錯(cuò)誤,我知道提交到集群環(huán)境后由于寫操作不在一個(gè)節(jié)點(diǎn)上了,所以難免會出現(xiàn)問題,那么,Storm最后的數(shù)據(jù)應(yīng)該怎樣保存下來呢?
A:Storm數(shù)據(jù)保存有很多種方式,可以保存MySQL,保存HBase都可以;這個(gè)需要自己編寫bolt來做實(shí)現(xiàn);或者通過相關(guān)的插件做實(shí)現(xiàn)。
Q:Storm啟動出現(xiàn)錯(cuò)誤,錯(cuò)誤描述為:org.apache.storm.utils.NimbusLeaderNotFoundException: Could not find leader nimbus from seed hosts ["192.168.226.13"]. Did you specify a valid list of nimbus hosts for config nimbus.seeds?
這如何解決?
A:出現(xiàn)這種錯(cuò)誤有兩種情況:
第一種情況:在storm的配置文件中配置一下nimbus.seeds: ["localhost"]。(如果確保這個(gè)配置沒有問題,可以進(jìn)行第二種情況的修改了)。
第二種情況:在zookeeper中找到/storm節(jié)點(diǎn),使用rmr將storm節(jié)點(diǎn)刪除,即可恢復(fù)正常。
Q:Storm 怎么處理重復(fù)的tuple?
A:因?yàn)镾torm 要保證tuple 的可靠處理,當(dāng)tuple 處理失敗或者超時(shí)的時(shí)候,spout 會fail并重新發(fā)送該tuple,那么就會有tuple 重復(fù)計(jì)算的問題。這個(gè)問題是很難解決的,storm也沒有提供機(jī)制幫助你解決。不過也有一些可行的策略:
(1)不處理,這也算是種策略。因?yàn)閷?shí)時(shí)計(jì)算通常并不要求很高的精確度,后
續(xù)的批處理計(jì)算會更正實(shí)時(shí)計(jì)算的誤差。
(2)使用第三方集中存儲來過濾,比如利用MySQL、MemCached 或者Redis 根據(jù)邏輯主鍵來去重。
(3)使用bloom filter 做過濾,簡單高效。
---------------- ?完? --------------
小伙伴們沖鴨,后臺留言區(qū)等著你!
關(guān)于Storm,今天你學(xué)到了什么?還有哪些不懂的?除此還對哪些話題感興趣?快來留言區(qū)打卡啦!留言方式:打開第XX天,答:……
同時(shí)歡迎大家搜集更多問題,投稿給我們!風(fēng)里雨里留言區(qū)里等你~
---------------- ?完? --------------
1.微信群:
添加小編微信:color_ld,備注“進(jìn)群+姓名+公司職位”即可,加入【云計(jì)算學(xué)習(xí)交流群】,和志同道合的朋友們共同打卡學(xué)習(xí)!
2.征稿:
投稿郵箱:liudan@csdn.net;微信號:color_ld。請備注投稿+姓名+公司職位。
推薦閱讀
Gartner的預(yù)言:通向混合IT之旅
崩潰!新浪程序員加班錯(cuò)失 77 萬年會大獎(jiǎng)
剛剛!華為又被美國盯上了!
阿里“菜鳥”AI?
以太坊升級的拖油瓶,竟只是這幾行代碼
程序員有話說 | 程序猿在乘地鐵的時(shí)候都在想什么?
清華北大“世界排名斷崖式下跌”?
點(diǎn)擊“閱讀原文”,打開 CSDN App 閱讀更貼心!
總結(jié)
以上是生活随笔為你收集整理的Storm精华问答 | 为什么这么多人用Spark而不用Storm?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 割鹿刀到底是什么刀?有什么来历?
- 下一篇: 如果有这样一台服务器……