ApacheFlink如何設(shè)置并行度

這篇文章將為大家詳細(xì)講解有關(guān)Apache Flink如何設(shè)置并行度,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的紅安網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

在使用Apache Flink對(duì)數(shù)據(jù)進(jìn)行處理時(shí)候,通常需要設(shè)置并行度。并行度是Apache Flink中一個(gè)非常重要的概念。設(shè)置合理的并行度能夠加快數(shù)據(jù)的處理效率,不合理的并行度會(huì)造成效率降低甚至是任務(wù)出錯(cuò)。
Apache Flink程序包含多個(gè)任務(wù)(source,transformations/operators,sink)。這些任務(wù)使用幾個(gè)并行實(shí)例所進(jìn)行執(zhí)行,這些并行的實(shí)例稱之為并行度。

 
 

如何設(shè)置并行度

Apache Flink支持在不同的級(jí)別設(shè)置并行度。配置文件、env級(jí)別、算子級(jí)別。

  1. 配置文件默認(rèn)
    在我們提交一個(gè)Job的時(shí)候如果沒有考慮并行度的話,那么Flink會(huì)使用默認(rèn)配置文件中的并行度。我們可以通過命令查看Flink配置文件的并行度。

$ cat flink-conf.yaml |grep "parallelism.default"
parallelism.default: 1
 

例如當(dāng)前獲取到的并行度為1。也就是說當(dāng)你不設(shè)置并行度的時(shí)候它就會(huì)使用配置文件默認(rèn)的并行度 1。
2.  env級(jí)別
env的級(jí)別就是Environment級(jí)別。也就是通過Execution Environment來設(shè)置整體的Job并行度。

val env = Stream...
env.setParallelism(5)
 
  1. 客戶端級(jí)別
    如果在執(zhí)行Job時(shí)候,發(fā)現(xiàn)代碼中沒有設(shè)置并行度而又不修改配置文件的話,可以通過Client來設(shè)置Job的并行度。

./bin/flink run -p 5 ../wordCount-java*.jar
 

-p即設(shè)置WordCount的Job并行度為5。4.  算子級(jí)別
我們?cè)诰帉慒link項(xiàng)目時(shí),可能對(duì)于不同的Operator設(shè)置不同的并行度,例如為了實(shí)現(xiàn)讀取Kafka的最高效讀取需要參考Kafka的partition的數(shù)量對(duì)并行度進(jìn)行設(shè)置,在Sink時(shí)需要對(duì)于Sink的介質(zhì)設(shè)置不同的并行度。這樣就會(huì)存在一個(gè)Job需要有多個(gè)并行度。這樣就需要用到算子級(jí)別的并行度設(shè)置

val env = Stream...
val text = ...
text.keyBy(XXX)
   .flatMap(XXX).setParallelism(5)  //計(jì)算時(shí)設(shè)置為5
   .addSink(XXXXX).setParallelism(1) //寫入數(shù)據(jù)庫時(shí)候設(shè)置為1
 
  • 并行度的高級(jí)別會(huì)覆蓋低級(jí)別的配置。例如在算子中設(shè)置的策略會(huì)覆蓋配置文件中的parallelism。

從優(yōu)先級(jí)上來看:  算子級(jí)別> env級(jí)別> Client級(jí)別> 系統(tǒng)默認(rèn)級(jí)別

在實(shí)際的使用中,我們需要設(shè)置合理的并行度來保證數(shù)據(jù)的高效處理,在一般情況下例如source,Sink等可能會(huì)需要不同的并行度來保證數(shù)據(jù)的快速讀取與寫入負(fù)載等。

Apache Flink如何設(shè)置并行度  
 

并行度設(shè)置的數(shù)量

Apache Flink的并行度設(shè)置并不是說越大越好、數(shù)據(jù)處理的效率就越高。而是需要設(shè)置合理的并行度。那么何謂合理呢?
Apache Flink的 并行度取決于每個(gè)TaskManager上的slot數(shù)量而決定的。Flink的JobManager把任務(wù)分成子任務(wù)提交給slot進(jìn)行執(zhí)行。相同的slot共享相同的JVM資源,同時(shí)對(duì)Flink提供維護(hù)的心跳等信息。
slot是指TaskManagere的并發(fā)執(zhí)行能力,通常來說TaskManager有多少核CPU也就會(huì)有多少個(gè)slot。這樣來看,我們?cè)O(shè)置的并行度其實(shí)是與TaskManager所有Slot數(shù)量有關(guān)的

關(guān)于“Apache Flink如何設(shè)置并行度”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

網(wǎng)頁名稱:ApacheFlink如何設(shè)置并行度
文章URL:http://bm7419.com/article28/giphjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、微信公眾號(hào)、企業(yè)建站定制開發(fā)、網(wǎng)站設(shè)計(jì)手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)