這篇文章將為大家詳細(xì)講解有關(guān)Apache Flink如何設(shè)置并行度,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的紅安網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
在使用Apache Flink對數(shù)據(jù)進(jìn)行處理時候,通常需要設(shè)置并行度。并行度是Apache Flink中一個非常重要的概念。設(shè)置合理的并行度能夠加快數(shù)據(jù)的處理效率,不合理的并行度會造成效率降低甚至是任務(wù)出錯。
Apache Flink程序包含多個任務(wù)(source,transformations/operators,sink)。這些任務(wù)使用幾個并行實例所進(jìn)行執(zhí)行,這些并行的實例稱之為并行度。
Apache Flink支持在不同的級別設(shè)置并行度。配置文件、env級別、算子級別。
配置文件默認(rèn)
在我們提交一個Job的時候如果沒有考慮并行度的話,那么Flink會使用默認(rèn)配置文件中的并行度。我們可以通過命令查看Flink配置文件的并行度。
$ cat flink-conf.yaml |grep "parallelism.default"
parallelism.default: 1
例如當(dāng)前獲取到的并行度為1。也就是說當(dāng)你不設(shè)置并行度的時候它就會使用配置文件默認(rèn)的并行度 1。
2. env級別
env的級別就是Environment級別。也就是通過Execution Environment來設(shè)置整體的Job并行度。
val env = Stream...
env.setParallelism(5)
客戶端級別
如果在執(zhí)行Job時候,發(fā)現(xiàn)代碼中沒有設(shè)置并行度而又不修改配置文件的話,可以通過Client來設(shè)置Job的并行度。
./bin/flink run -p 5 ../wordCount-java*.jar
-p即設(shè)置WordCount的Job并行度為5。4. 算子級別
我們在編寫Flink項目時,可能對于不同的Operator設(shè)置不同的并行度,例如為了實現(xiàn)讀取Kafka的最高效讀取需要參考Kafka的partition的數(shù)量對并行度進(jìn)行設(shè)置,在Sink時需要對于Sink的介質(zhì)設(shè)置不同的并行度。這樣就會存在一個Job需要有多個并行度。這樣就需要用到算子級別的并行度設(shè)置
val env = Stream...
val text = ...
text.keyBy(XXX)
.flatMap(XXX).setParallelism(5) //計算時設(shè)置為5
.addSink(XXXXX).setParallelism(1) //寫入數(shù)據(jù)庫時候設(shè)置為1
并行度的高級別會覆蓋低級別的配置。例如在算子中設(shè)置的策略會覆蓋配置文件中的parallelism。
從優(yōu)先級上來看: 算子級別> env級別> Client級別> 系統(tǒng)默認(rèn)級別
在實際的使用中,我們需要設(shè)置合理的并行度來保證數(shù)據(jù)的高效處理,在一般情況下例如source,Sink等可能會需要不同的并行度來保證數(shù)據(jù)的快速讀取與寫入負(fù)載等。
Apache Flink的并行度設(shè)置并不是說越大越好、數(shù)據(jù)處理的效率就越高。而是需要設(shè)置合理的并行度。那么何謂合理呢?
Apache Flink的 并行度取決于每個TaskManager上的slot數(shù)量而決定的。Flink的JobManager把任務(wù)分成子任務(wù)提交給slot進(jìn)行執(zhí)行。相同的slot共享相同的JVM資源,同時對Flink提供維護(hù)的心跳等信息。
slot是指TaskManagere的并發(fā)執(zhí)行能力,通常來說TaskManager有多少核CPU也就會有多少個slot。這樣來看,我們設(shè)置的并行度其實是與TaskManager所有Slot數(shù)量有關(guān)的。
關(guān)于“Apache Flink如何設(shè)置并行度”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
網(wǎng)頁名稱:ApacheFlink如何設(shè)置并行度
文章URL:http://aaarwkj.com/article28/giphjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、微信公眾號、企業(yè)建站、定制開發(fā)、網(wǎng)站設(shè)計、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)