溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

storm入門(mén)知識(shí)點(diǎn)有哪些

發(fā)布時(shí)間:2021-12-23 09:05:07 來(lái)源:億速云 閱讀:131 作者:iii 欄目:云計(jì)算

這篇文章主要介紹“storm入門(mén)知識(shí)點(diǎn)有哪些”,在日常操作中,相信很多人在storm入門(mén)知識(shí)點(diǎn)有哪些問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”storm入門(mén)知識(shí)點(diǎn)有哪些”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

1.1   實(shí)時(shí)流計(jì)算

互聯(lián)網(wǎng)從誕生的第一時(shí)間起,對(duì)世界的最大的改變就是讓信息能夠?qū)崟r(shí)交互,從而大大加速了各個(gè)環(huán)節(jié)的效率。正因?yàn)榇蠹覍?duì)信息實(shí)時(shí)響應(yīng)、實(shí)時(shí)交互的需求,軟件行業(yè)除了個(gè)人操作系統(tǒng)之外,數(shù)據(jù)庫(kù)(更精確的說(shuō)是關(guān)系型數(shù)據(jù)庫(kù))應(yīng)該是軟件行業(yè)發(fā)展最快、收益最為豐厚的產(chǎn)品了。記得十年前,很多銀行別說(shuō)實(shí)時(shí)轉(zhuǎn)賬,連實(shí)時(shí)查詢都做不到,但是數(shù)據(jù)庫(kù)和高速網(wǎng)絡(luò)改變了這個(gè)情況。

隨著互聯(lián)網(wǎng)的更進(jìn)一步發(fā)展,從Portal信息瀏覽型到Search信息搜索型到SNS關(guān)系交互傳遞型,以及電子商務(wù)、互聯(lián)網(wǎng)旅游生活產(chǎn)品等將生活中的流通環(huán)節(jié)在線化。對(duì)效率的要求讓大家對(duì)于實(shí)時(shí)性的要求進(jìn)一步提升,而信息的交互和溝通正在從點(diǎn)對(duì)點(diǎn)往信息鏈甚至信息網(wǎng)的方向發(fā)展,這樣必然帶來(lái)數(shù)據(jù)在各個(gè)維度的交叉關(guān)聯(lián),數(shù)據(jù)爆炸已不可避免。因此流式處理加NoSQL產(chǎn)品應(yīng)運(yùn)而生,分別解決實(shí)時(shí)框架和數(shù)據(jù)大規(guī)模存儲(chǔ)計(jì)算的問(wèn)題。

早在7、8年前諸如UC伯克利、斯坦福等大學(xué)就開(kāi)始了對(duì)流式數(shù)據(jù)處理的研究,但是由于更多的關(guān)注于金融行業(yè)的業(yè)務(wù)場(chǎng)景或者互聯(lián)網(wǎng)流量監(jiān)控的業(yè)務(wù)場(chǎng)景,以及當(dāng)時(shí)互聯(lián)網(wǎng)數(shù)據(jù)場(chǎng)景的限制,造成了研究多是基于對(duì)傳統(tǒng)數(shù)據(jù)庫(kù)處理的流式化,對(duì)流式框架本身的研究偏少。目前這樣的研究逐漸沒(méi)有了聲音,工業(yè)界更多的精力轉(zhuǎn)向了實(shí)時(shí)數(shù)據(jù)庫(kù)。

2010年Yahoo!對(duì)S4的開(kāi)源,2011年twitter對(duì)Storm的開(kāi)源,改變了這個(gè)情況。以前互聯(lián)網(wǎng)的開(kāi)發(fā)人員在做一個(gè)實(shí)時(shí)應(yīng)用的時(shí)候,除了要關(guān)注應(yīng)用邏輯計(jì)算處理本身,還要為了數(shù)據(jù)的實(shí)時(shí)流轉(zhuǎn)、交互、分布大傷腦筋。但是現(xiàn)在情況卻大為不同,以Storm為例,開(kāi)發(fā)人員可以快速的搭建一套健壯、易用的實(shí)時(shí)流處理框架,配合SQL產(chǎn)品或者NoSQL產(chǎn)品或者M(jìn)apReduce計(jì)算平臺(tái),就可以低成本的做出很多以前很難想象的實(shí)時(shí)產(chǎn)品:比如一淘數(shù)據(jù)部的量子恒道品牌旗下的多個(gè)產(chǎn)品就是構(gòu)建在實(shí)時(shí)流處理平臺(tái)上的。

本教程是一本對(duì)storm的基礎(chǔ)介紹手冊(cè),但是我們也希望它不僅僅是一本storm的使用手冊(cè),我們會(huì)在其中加入更多我們?cè)趯?shí)際數(shù)據(jù)生產(chǎn)過(guò)程的經(jīng)驗(yàn)和應(yīng)用的架構(gòu),最后的目的是幫助所有愿意使用實(shí)時(shí)流處理框架的技術(shù)同仁,同時(shí)也默默的改變這個(gè)世界。

1.2   Storm特點(diǎn)

Storm是一個(gè)開(kāi)源的分布式實(shí)時(shí)計(jì)算系統(tǒng),可以簡(jiǎn)單、可靠的處理大量的數(shù)據(jù)流。Storm有很多使用場(chǎng)景:如實(shí)時(shí)分析,在線機(jī)器學(xué)習(xí),持續(xù)計(jì)算,分布式RPC,ETL等等。Storm支持水平擴(kuò)展,具有高容錯(cuò)性,保證每個(gè)消息都會(huì)得到處理,而且處理速度很快(在一個(gè)小集群中,每個(gè)結(jié)點(diǎn)每秒可以處理數(shù)以百萬(wàn)計(jì)的消息)。Storm的部署和運(yùn)維都很便捷,而且更為重要的是可以使用任意編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用。

Storm有如下特點(diǎn):

  • 編程模型簡(jiǎn)單

在大數(shù)據(jù)處理方面相信大家對(duì)hadoop已經(jīng)耳熟能詳,基于Google Map/Reduce來(lái)實(shí)現(xiàn)的Hadoop為開(kāi)發(fā)者提供了map、reduce原語(yǔ),使并行批處理程序變得非常地簡(jiǎn)單和優(yōu)美。同樣,Storm也為大數(shù)據(jù)的實(shí)時(shí)計(jì)算提供了一些簡(jiǎn)單優(yōu)美的原語(yǔ),這大大降低了開(kāi)發(fā)并行實(shí)時(shí)處理的任務(wù)的復(fù)雜性,幫助你快速、高效的開(kāi)發(fā)應(yīng)用。

  • 可擴(kuò)展

在Storm集群中真正運(yùn)行topology的主要有三個(gè)實(shí)體:工作進(jìn)程、線程和任務(wù)。Storm集群中的每臺(tái)機(jī)器上都可以運(yùn)行多個(gè)工作進(jìn)程,每個(gè)工作進(jìn)程又可創(chuàng)建多個(gè)線程,每個(gè)線程可以執(zhí)行多個(gè)任務(wù),任務(wù)是真正進(jìn)行數(shù)據(jù)處理的實(shí)體,我們開(kāi)發(fā)的spout、bolt就是作為一個(gè)或者多個(gè)任務(wù)的方式執(zhí)行的。

因此,計(jì)算任務(wù)在多個(gè)線程、進(jìn)程和服務(wù)器之間并行進(jìn)行,支持靈活的水平擴(kuò)展。

  • 高可靠性

Storm可以保證spout發(fā)出的每條消息都能被“完全處理”,這也是直接區(qū)別于其他實(shí)時(shí)系統(tǒng)的地方,如S4。

請(qǐng)注意,spout發(fā)出的消息后續(xù)可能會(huì)觸發(fā)產(chǎn)生成千上萬(wàn)條消息,可以形象的理解為一棵消息樹(shù),其中spout發(fā)出的消息為樹(shù)根,Storm會(huì)跟蹤這棵消息樹(shù)的處理情況,只有當(dāng)這棵消息樹(shù)中的所有消息都被處理了,Storm才會(huì)認(rèn)為spout發(fā)出的這個(gè)消息已經(jīng)被“完全處理”。如果這棵消息樹(shù)中的任何一個(gè)消息處理失敗了,或者整棵消息樹(shù)在限定的時(shí)間內(nèi)沒(méi)有“完全處理”,那么spout發(fā)出的消息就會(huì)重發(fā)。

考慮到盡可能減少對(duì)內(nèi)存的消耗,Storm并不會(huì)跟蹤消息樹(shù)中的每個(gè)消息,而是采用了一些特殊的策略,它把消息樹(shù)當(dāng)作一個(gè)整體來(lái)跟蹤,對(duì)消息樹(shù)中所有消息的唯一id進(jìn)行異或計(jì)算,通過(guò)是否為零來(lái)判定spout發(fā)出的消息是否被“完全處理”,這極大的節(jié)約了內(nèi)存和簡(jiǎn)化了判定邏輯,后面會(huì)對(duì)這種機(jī)制進(jìn)行詳細(xì)介紹。

這種模式,每發(fā)送一個(gè)消息,都會(huì)同步發(fā)送一個(gè)ack/fail,對(duì)于網(wǎng)絡(luò)的帶寬會(huì)有一定的消耗,如果對(duì)于可靠性要求不高,可通過(guò)使用不同的emit接口關(guān)閉該模式。

上面所說(shuō)的,Storm保證了每個(gè)消息至少被處理一次,但是對(duì)于有些計(jì)算場(chǎng)合,會(huì)嚴(yán)格要求每個(gè)消息只被處理一次,幸而Storm的0.7.0引入了事務(wù)性拓?fù)洌鉀Q了這個(gè)問(wèn)題,后面會(huì)有詳述。

  •  高容錯(cuò)性

如果在消息處理過(guò)程中出了一些異常,Storm會(huì)重新安排這個(gè)出問(wèn)題的處理單元。Storm保證一個(gè)處理單元永遠(yuǎn)運(yùn)行(除非你顯式殺掉這個(gè)處理單元)。

當(dāng)然,如果處理單元中存儲(chǔ)了中間狀態(tài),那么當(dāng)處理單元重新被Storm啟動(dòng)的時(shí)候,需要應(yīng)用自己處理中間狀態(tài)的恢復(fù)。

  • 支持多種編程語(yǔ)言

除了用java實(shí)現(xiàn)spout和bolt,你還可以使用任何你熟悉的編程語(yǔ)言來(lái)完成這項(xiàng)工作,這一切得益于Storm所謂的多語(yǔ)言協(xié)議。多語(yǔ)言協(xié)議是Storm內(nèi)部的一種特殊協(xié)議,允許spout或者bolt使用標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出來(lái)進(jìn)行消息傳遞,傳遞的消息為單行文本或者是json編碼的多行。

Storm支持多語(yǔ)言編程主要是通過(guò)ShellBolt, ShellSpout和ShellProcess這些類(lèi)來(lái)實(shí)現(xiàn)的,這些類(lèi)都實(shí)現(xiàn)了IBolt 和 ISpout接口,以及讓shell通過(guò)java的ProcessBuilder類(lèi)來(lái)執(zhí)行腳本或者程序的協(xié)議。

可以看到,采用這種方式,每個(gè)tuple在處理的時(shí)候都需要進(jìn)行json的編解碼,因此在吞吐量上會(huì)有較大影響。

  • 支持本地模式

Storm有一種“本地模式”,也就是在進(jìn)程中模擬一個(gè)Storm集群的所有功能,以本地模式運(yùn)行topology跟在集群上運(yùn)行topology類(lèi)似,這對(duì)于我們開(kāi)發(fā)和測(cè)試來(lái)說(shuō)非常有用。

  • 高效

用ZeroMQ作為底層消息隊(duì)列, 保證消息能快速被處理

到此,關(guān)于“storm入門(mén)知識(shí)點(diǎn)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI