真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Storm數(shù)據(jù)流模型有哪些

這篇文章主要講解了“Storm數(shù)據(jù)流模型有哪些”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Storm數(shù)據(jù)流模型有哪些”吧!

龍城網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,龍城網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為龍城上千多家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的龍城做網(wǎng)站的公司定做!

Storm 是一個開源的實時計算系統(tǒng),它提供了一系列的基本元素用于進行計算:

1 Topology 

2 Stream

3 spout

4 bolt

在我們提交我們的topology的時候,一旦你提交了你的topology到你的集群之中后,除非你顯示的去停止任務

集群中間的topology會一直的在運行

計算任務Topology是由不同的Spouts 和 bolts,通過數(shù)據(jù)流 Stream連接起來的圖,下面是一個Topology的結(jié)構(gòu)示意圖

Storm數(shù)據(jù)流模型有哪些

其中包括了

1 :  Spout: Strom 中的消息源頭,用于為Topology來生產(chǎn)消息(數(shù)據(jù)),一般是從外部的數(shù)據(jù)源開始讀取數(shù)據(jù),在我們的真實環(huán)境之中,我們采用的是 kafka-Storm 流式對接的接口,所以我們 使用的Spout為 :kafkaSpout

2 Bolt, Storm中的消息處理者,用于為Topology 進行消息的處理,Bolt,可以執(zhí)行如下的幾種操作:

         2.1 :過濾

         2.2: 聚合

         2.3: 查詢數(shù)據(jù)庫

                  等幾種操作,并且可以一級一級的進行處理,最終Topology會被提交到Storm集群中運行,也可以通過命令停止topology的運行,并且將占用的資源歸還給Storm集群。

Storm 數(shù)據(jù)流模型

數(shù)據(jù)流的模型是Storm中對數(shù)據(jù)進行的抽象,它是時間上無界的tuple的元祖,在topology之中,Spout是bolt的源頭,

bolt是對于Spout的消費者,負責Topology從特定數(shù)據(jù)源發(fā)射Stream,bolt可以接受任意多個Stream輸入,然后進行數(shù)據(jù)的加工處理工作,如果需要,bolt還可以發(fā)射出新的Stream給下一級Bolt進行處理

下面是一個Topology內(nèi)部Spout和Bolt之間的數(shù)據(jù)流關(guān)系:

Storm數(shù)據(jù)流模型有哪些

topology中每一個計算組件(Spout和bolt) 都有一個并行度來控制,在創(chuàng)建Topology時可以進行指定,Storm在集群內(nèi)分配對應并行度個數(shù)的線程來同時執(zhí)行這一個組件

那么,有一個這樣的問題: 既然對于一個Spout,或Bolt,都會有多個task線程來運行,那么如何在兩個組件之間發(fā)送tuple 元祖了?

Storm 提供了好幾種數(shù)據(jù)流的分發(fā)策略用來解決這一個問題,在Topology定義的時,需要為每一個bolt指定接受什么樣的Stream作為它輸入

目前Storm中提供了一下的7種Stream Grouping

Shuffle Grouping、

Fields Grouping、

All Grouping、

Global Grouping、

Non Grouping、

Direct Grouping、

Local or shuffle grouping

一種Storm不能支持的場景

如果您閱讀到這里,那么您可以細細的回想起來,當我們每一個業(yè)務邏輯都被一個Topolo持有的時候,

只能在Topology內(nèi)按照 “發(fā)布-訂閱”方式在不同的計算組件(spout/bolt)之間進行數(shù)據(jù)的處理,而Stream在

Topology之間是無法流動的。

很多時候,開始需要把你所有的業(yè)務邏輯寫到你的一個Topology之中,請不要忘記:Stream在topology之間是無法流動的

Storm數(shù)據(jù)流模型有哪些

也就是意味著一個業(yè)務邏輯的過程,不能夠和另外的一個業(yè)務過程進行通信

我們假設現(xiàn)在有這樣的一個Topology1,在整個Topology的過程之中,通過初步的 filter,join bolt,Business1

Bolt,其中,F(xiàn)ilter Bolt用于對數(shù)據(jù)的過濾,join Bolt用于數(shù)據(jù)流的聚合,如下圖所示:

Storm數(shù)據(jù)流模型有哪些

目前這個Topology已經(jīng)被提交到集群了,那么,如果我們需要一個新的業(yè)務邏輯,而

這個Topology的特點是和Topology1 公用的數(shù)據(jù)源,而且前期的預處理過程是一樣的

那么這時候Storm 怎么滿足這一需求?

1 第一: kill掉原先的topology,然后實現(xiàn)bussiness Bolt的計算邏輯,并且重新打包形成一個新的

topology計算任務的jar 包后,提交到Storm集群之中重新運行,那么目前,我們的結(jié)構(gòu)圖如下所示:

Storm數(shù)據(jù)流模型有哪些

這樣的過程之中,來自于不同數(shù)據(jù)源的處理過程,經(jīng)過處理以后,經(jīng)過join以后,被發(fā)送到兩個業(yè)務邏輯的處理Bolt之中。

第一種方式的缺陷:

    Topology 需要重新來部署,并且狀態(tài)會丟失。而且需要修改你自身的topology結(jié)構(gòu),失去了穩(wěn)定性的保證

2:第二種方式:

Storm數(shù)據(jù)流模型有哪些

同一份的數(shù)據(jù)源被被兩份處理流程所消費。無疑增加了External Data Source的負載壓力,而且會導致我們的發(fā)射數(shù)據(jù)在集群之中被傳輸兩份,一旦數(shù)據(jù)重復讀取的因子超過2,那么對Storm 的計算Slot的浪費很嚴重

3 第三種方式

   ok,看了以上兩種方式以后,也許你會提出下面的解決方案,通過kafka這樣的消息中間件,來實現(xiàn)不同Topology的

Spout 共享數(shù)據(jù)源頭,而且這樣可以做到 

                            3.1:【消息可靠傳輸】    

                            3.2: 【消息rewind回傳等】

     有關(guān)kafka-Storm的接入組件,請參考 【至靜】所寫的其他kafka有關(guān)的博文

Storm數(shù)據(jù)流模型有哪些

對于消息中間件的引入,一方面減少了對減少對External Data Source的重復訪問壓力,而且通過消息中間件,我們屏蔽了External Data Sourcede 的重復訪問壓力

感謝各位的閱讀,以上就是“Storm數(shù)據(jù)流模型有哪些”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Storm數(shù)據(jù)流模型有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


新聞名稱:Storm數(shù)據(jù)流模型有哪些
URL標題:http://weahome.cn/article/pjieci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部