這篇文章主要講解了“Storm拓?fù)洳l(fā)度怎么實(shí)現(xiàn)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Storm拓?fù)洳l(fā)度怎么實(shí)現(xiàn)”吧!
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),平羅企業(yè)網(wǎng)站建設(shè),平羅品牌網(wǎng)站建設(shè),網(wǎng)站定制,平羅網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,平羅網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
1 Storm是按照下面三種主要的部分來區(qū)分Storm集群之中一個(gè)世紀(jì)運(yùn)行的拓?fù)涞模?/p>
1 : worker
2:Executor (線程)
3:tasks
下圖簡(jiǎn)單的說明了他們的關(guān)系~ ,好的,這是一張重復(fù)發(fā)表的結(jié)構(gòu)圖:
對(duì)于上文而言,一個(gè)Task,也就是 :
一個(gè)Executor 是一個(gè)worker 進(jìn)程生成的一個(gè)線程,他可能運(yùn)行著一個(gè)相同的組件 Spout和bolt的一個(gè)或者
多個(gè)task
1 個(gè)task執(zhí)行著實(shí)際的數(shù)據(jù)處理,你用代碼實(shí)現(xiàn)的每一個(gè)spout或bolt就相當(dāng)于分布于整個(gè)集群中的許多個(gè)task。
在1個(gè)拓?fù)涞纳芷谥校?個(gè)組 件的task的數(shù)量總是一樣的,但是1個(gè)組件的executor(線程)的數(shù)量可以隨著時(shí)
間而改變。這意味著下面的條件總是成立:thread的數(shù)量 <= task的數(shù)量。默認(rèn)情況下,task的數(shù)量與executor的
數(shù)量一樣,例如,Storm會(huì)在每1個(gè)線程運(yùn)行1個(gè)task。
注意Storm的術(shù)語"并發(fā)度(parallelism)"是特別用來描述所謂的parallelism hint的,這代表1個(gè)組件的初始的executor(線程)的數(shù)量。在此文檔中我們使用術(shù)語"并發(fā)度"的一般意義來描述你不但可以配置executor的數(shù)量,還可以配置worker進(jìn)程的數(shù)量,還可以是1個(gè)拓?fù)涞膖ask的數(shù)量。在用到并發(fā)度的狹義的定義時(shí)我們會(huì)特別提出。
下面的小節(jié)給出了一些不同的配置選項(xiàng),還有你如何在代碼中設(shè)置它們。有多種方法可以進(jìn)行設(shè)置,表格列舉了其中幾種。Storm目前有下列的配置優(yōu)先級(jí):defaults.yaml < storm.yaml < 特定拓?fù)涞呐渲?< 內(nèi)部特定組件的配置 < 外部特定組件的配置。
指標(biāo) 1: worker 進(jìn)程的數(shù)量
描述: 一個(gè)拓?fù)溆卸嗌賯€(gè)分布于集群中的機(jī)器的Wokrer 進(jìn)程
配置選項(xiàng): TopoLogy_workers
如何在代碼中設(shè)置: Config.setNumWorkers
指標(biāo) 2: executor的數(shù)量 (線程)
描述 : 每個(gè)組件會(huì)有多好個(gè) executor
配置選項(xiàng) :
TopologyBuilder.setPout();
TopologyBuilder.setBolt();
指標(biāo) 3:task的數(shù)量:
ComponentConfigurationDeclarer#setNumTasks()
好比在具體的實(shí)踐之中:
topologyBuilder.setBolt("green-bolt",new GreenBolt(),2).setNumTasks(4).shuffleGrouping("blue-spout");
在上面的代碼中,我們配置了Storm運(yùn)行GreenBolt指定了初始有
1:『 2 個(gè)executor 』
2:『4 個(gè)相關(guān)的task』
一個(gè)運(yùn)行中的拓?fù)涞睦?/p>
下面我們來看看以下,簡(jiǎn)單的三元色, 藍(lán),綠,黃 三個(gè)bolt的的流動(dòng)關(guān)系:
在上圖之中,總共的 parallellsm為10,一共有兩個(gè)worker【也就是上圖之中,2個(gè)比較大的分區(qū)】,每個(gè)Worker
具備有 10/2 =5 條線程
請(qǐng)注意
綠色的Bolt配置成2個(gè)executor 和4個(gè)task,為此每個(gè)executor 為這個(gè)bolt 運(yùn)行2個(gè)task
以下的代碼可以配置以上的說明組件:
Config conf = new Conf(); conf.setNumWorkers(2); 在這里我們使用兩個(gè)Worker進(jìn)程 topologyBuilder.setSpout("bule-spout",newBlueSpout(),2); 我們的blue不斷產(chǎn)生數(shù)據(jù), topologyBuilder.setBolt("green-bolt",new GreenBolt(),2).setNumTasks(4).shuffleGrouping("blueSpout"); topologyBuilder.setBolt(“yellow-bolt”, new YellowBolt(), 6) .shuffleGrouping(“green-bolt”); StormSubmitter.submitTopology( “mytopology”, conf, topologyBuilder.createTopology());
感謝各位的閱讀,以上就是“Storm拓?fù)洳l(fā)度怎么實(shí)現(xiàn)”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Storm拓?fù)洳l(fā)度怎么實(shí)現(xiàn)這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!