国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Flink流批一體計(jì)算(7):Flink優(yōu)化

這篇具有很好參考價(jià)值的文章主要介紹了Flink流批一體計(jì)算(7):Flink優(yōu)化。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

配置內(nèi)存

設(shè)置并行度

操作場景

具體設(shè)置

補(bǔ)充

配置進(jìn)程參數(shù)

操作場景

具體配置

配置netty網(wǎng)絡(luò)通信

操作場景

具體配置

配置內(nèi)存

Flink是依賴內(nèi)存計(jì)算,計(jì)算過程中內(nèi)存不夠?qū)?/span>Flink的執(zhí)行效率影響很大??梢酝ㄟ^監(jiān)控GCGarbage Collection),評(píng)估內(nèi)存使用及剩余情況來判斷內(nèi)存是否變成性能瓶頸,并根據(jù)情況優(yōu)化。

監(jiān)控節(jié)點(diǎn)進(jìn)程的YARNContainer GC日志,如果頻繁出現(xiàn)Full GC,需要優(yōu)化GC。

conf/flink-conf.yaml

env.java.opts: -XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+AlwaysPreTouch -server
-XX:+HeapDumpOnOutOfMemoryError

調(diào)整老年代和新生代的比值。env.java.opts配置項(xiàng)中添加參數(shù):-XX:NewRatio。

如“-XX:NewRatio=2,則表示老年代與新生代的比值為2:1,新生代占整個(gè)堆空間的1/3,老年代占2/3。

設(shè)置并行度

操作場景

并行度控制任務(wù)的數(shù)量,影響操作后數(shù)據(jù)被切分成的塊數(shù)。調(diào)整并行度讓任務(wù)的數(shù)量和每個(gè)任務(wù)處理的數(shù)據(jù)與機(jī)器的處理能力達(dá)到最優(yōu)。

查看CPU使用情況和內(nèi)存占用情況,當(dāng)任務(wù)和數(shù)據(jù)不是平均分布在各節(jié)點(diǎn),而是集中在個(gè)別節(jié)點(diǎn)時(shí),可以增大并行度使任務(wù)和數(shù)據(jù)更均勻的分布在各個(gè)節(jié)點(diǎn)。增加任務(wù)的并行度,充分利用集群機(jī)器的計(jì)算能力。

具體設(shè)置

任務(wù)的并行度可以通過以下四種層次(按優(yōu)先級(jí)從高到低排列)指定,用戶可以根據(jù)實(shí)際的內(nèi)存、CPU、數(shù)據(jù)以及應(yīng)用程序邏輯的情況調(diào)整并行度參數(shù)。

  • 算子層次

一個(gè)算子、數(shù)據(jù)源和sink的并行度可以通過調(diào)用setParallelism()方法來指定,例如

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<String> text = [...]
DataStream<Tuple2<String, Integer>> wordCounts = text
??? .flatMap(new LineSplitter())
??? .keyBy(0)
??? .timeWindow(Time.seconds(5))
??? .sum(1).setParallelism(5);
wordCounts.print();
env.execute("Word Count Example");
  • 執(zhí)行環(huán)境層次

Flink程序運(yùn)行在執(zhí)行環(huán)境中。執(zhí)行環(huán)境為所有執(zhí)行的算子、數(shù)據(jù)源、data sink定義了一個(gè)默認(rèn)的并行度。

執(zhí)行環(huán)境的默認(rèn)并行度可以通過調(diào)用setParallelism()方法指定。例如:

final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(3);
DataStream<String> text = [...]
DataStream<Tuple2<String, Integer>> wordCounts = [...]
wordCounts.print();
env.execute("Word Count Example");
  • 客戶端層次

并行度可以在客戶端將job提交到Flink時(shí)設(shè)定。對(duì)于CLI客戶端,可以通過“-p”參數(shù)指定并行度。例如:

./bin/flink run -p 10 ../examples/*WordCount-java*.jar
  • 系統(tǒng)層次

在系統(tǒng)級(jí)可以通過修改Flink客戶端conf目錄下的“flink-conf.yaml”文件中的“parallelism.default”配置選項(xiàng)來指定所有執(zhí)行環(huán)境的默認(rèn)并行度。

補(bǔ)充

開發(fā)Flink應(yīng)用程序時(shí),優(yōu)化DataStream的數(shù)據(jù)分區(qū)或分組操作。

  • 當(dāng)分區(qū)導(dǎo)致數(shù)據(jù)傾斜時(shí),需要考慮優(yōu)化分區(qū)。
  • 避免非并行度操作,有些對(duì)DataStream的操作會(huì)導(dǎo)致無法并行,例如WindowAll。
  • keyBy盡量不要使用String。

配置進(jìn)程參數(shù)

操作場景

Flink on YARN模式下,有JobManagerTaskManager兩種進(jìn)程。在任務(wù)調(diào)度和運(yùn)行的過程中,JobManagerTaskManager承擔(dān)了很大的責(zé)任。

因而JobManagerTaskManager的參數(shù)配置對(duì)Flink應(yīng)用的執(zhí)行有著很大的影響意義。用戶可通過如下操作對(duì)Flink集群性能做優(yōu)化。

具體配置
  • 配置JobManager內(nèi)存

JobManager負(fù)責(zé)任務(wù)的調(diào)度,以及TaskManager、RM之間的消息通信。當(dāng)任務(wù)數(shù)變多,任務(wù)并行度增大時(shí),JobManager內(nèi)存都需要相應(yīng)增大。

您可以根據(jù)實(shí)際任務(wù)數(shù)量的多少,為JobManager設(shè)置一個(gè)合適的內(nèi)存。

????????在使用yarn-session命令時(shí),添加“-jm MEM”參數(shù)設(shè)置內(nèi)存。
????????在使用yarn-cluster命令時(shí),添加“-yjm MEM”參數(shù)設(shè)置內(nèi)存。

  • 配置TaskManager個(gè)數(shù)

每個(gè)TaskManager每個(gè)核同時(shí)能跑一個(gè)task,所以增加了TaskManager的個(gè)數(shù)相當(dāng)于增大了任務(wù)的并發(fā)度。在資源充足的情況下,可以相應(yīng)增加TaskManager的個(gè)數(shù),以提高運(yùn)行效率。

  • 配置TaskManager Slot數(shù)

每個(gè)TaskManager多個(gè)核同時(shí)能跑多個(gè)task,相當(dāng)于增大了任務(wù)的并發(fā)度。但是由于所有核共用TaskManager的內(nèi)存,所以要在內(nèi)存和核數(shù)之間做好平衡。

????????在使用yarn-session命令時(shí),添加“-s?NUM”參數(shù)設(shè)置SLOT數(shù)。
????????在使用yarn-cluster命令時(shí),添加“-ys?NUM”參數(shù)設(shè)置SLOT數(shù)。

  • 配置TaskManager內(nèi)存

TaskManager的內(nèi)存主要用于任務(wù)執(zhí)行、通信等。當(dāng)一個(gè)任務(wù)很大的時(shí)候,可能需要較多資源,因而內(nèi)存也可以做相應(yīng)的增加。

????????將在使用yarn-session命令時(shí),添加“-tm MEM”參數(shù)設(shè)置內(nèi)存。
????????將在使用yarn-cluster命令時(shí),添加“-ytm MEM”參數(shù)設(shè)置內(nèi)存。

配置netty網(wǎng)絡(luò)通信

操作場景

Flink通信主要依賴netty網(wǎng)絡(luò),所以在Flink應(yīng)用執(zhí)行過程中,netty的設(shè)置尤為重要,網(wǎng)絡(luò)通信的好壞直接決定著數(shù)據(jù)交換的速度以及任務(wù)執(zhí)行的效率。

具體配置

以下配置均可在客戶端的“conf/flink-conf.yaml”配置文件中進(jìn)行修改適配,默認(rèn)已經(jīng)是相對(duì)較優(yōu)解,請(qǐng)謹(jǐn)慎修改,防止性能下降。

  • taskmanager.network.netty.num-arenas:

默認(rèn)是taskmanager.numberOfTaskSlots,表示netty的域的數(shù)量。

  • taskmanager.network.netty.server.numThreads和taskmanager.network.netty.client.numThreads:

默認(rèn)是taskmanager.numberOfTaskSlots,表示netty的客戶端和服務(wù)端的線程數(shù)目設(shè)置。

  • taskmanager.network.netty.client.connectTimeoutsec:

默認(rèn)是120s,表示taskmanager的客戶端連接超時(shí)的時(shí)間。

  • taskmanager.network.netty.sendReceiveBufferSize:

默認(rèn)是系統(tǒng)緩沖區(qū)大小(cat /proc/sys/net/ipv4/tcp_[rw]mem) ,一般為4MB,表示netty的發(fā)送和接收的緩沖區(qū)大小。

  • taskmanager.network.netty.transport:

默認(rèn)為nio方式,表示netty的傳輸方式,有nio和epoll兩種方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-517264.html

到了這里,關(guān)于Flink流批一體計(jì)算(7):Flink優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Flink流批一體計(jì)算(4):Flink功能模塊

    Flink流批一體計(jì)算(4):Flink功能模塊

    目錄 Flink功能架構(gòu) Flink輸入輸出 Flink功能架構(gòu) Flink是分層架構(gòu)的分布式計(jì)算引擎,每層的實(shí)現(xiàn)依賴下層提供的服務(wù),同時(shí)提供抽象的接口和服務(wù)供上層使用。 Flink 架構(gòu)可以分為4層,包括Deploy部署層、Core核心層、API層和Library層 部署層:主要涉及Flink的部署模式。Flink支持多種

    2024年02月10日
    瀏覽(25)
  • Flink流批一體計(jì)算(5):部署運(yùn)行模式

    目錄 集群運(yùn)行模式 1.local模式 2.standalone模式 3.Flink on YARN模式 本地模式 Standalone 模式 Flink on Yarn 模式 集群運(yùn)行模式 類似于 Spark , Flink 也有各種運(yùn)行模式,其中主要支持三種: local 模式、 standalone 模式以及 Flink on YARN 模式。 每種模式都有特定的使用場景,接下來一起了解一

    2024年02月10日
    瀏覽(57)
  • Flink流批一體計(jì)算(16):PyFlink DataStream API

    Flink流批一體計(jì)算(16):PyFlink DataStream API

    目錄 概述 Pipeline Dataflow 代碼示例WorldCount.py 執(zhí)行腳本W(wǎng)orldCount.py 概述 Apache Flink 提供了 DataStream API,用于構(gòu)建健壯的、有狀態(tài)的流式應(yīng)用程序。它提供了對(duì)狀態(tài)和時(shí)間細(xì)粒度控制,從而允許實(shí)現(xiàn)高級(jí)事件驅(qū)動(dòng)系統(tǒng)。 用戶實(shí)現(xiàn)的Flink程序是由Stream和Transformation這兩個(gè)基本構(gòu)建塊組

    2024年02月11日
    瀏覽(25)
  • 流批一體計(jì)算引擎-4-[Flink]消費(fèi)kafka實(shí)時(shí)數(shù)據(jù)

    流批一體計(jì)算引擎-4-[Flink]消費(fèi)kafka實(shí)時(shí)數(shù)據(jù)

    Python3.6.9 Flink 1.15.2消費(fèi)Kafaka Topic PyFlink基礎(chǔ)應(yīng)用之kafka 通過PyFlink作業(yè)處理Kafka數(shù)據(jù) PyFlink需要特定的Python版本,Python 3.6, 3.7, 3.8 or 3.9。 1.3.1 python3和pip3的配置 一、系統(tǒng)中安裝了多個(gè)版本的python3 。 二、環(huán)境變量path作用順序 三、安裝Pyflink 1.3.2 配置Flink Kafka連接 (1)在https://mvnr

    2024年02月06日
    瀏覽(35)
  • Flink流批一體計(jì)算(10):PyFlink Tabel API

    簡述 PyFlink 是 Apache Flink 的 Python API ,你可以使用它構(gòu)建可擴(kuò)展的批處理和流處理任務(wù),例如實(shí)時(shí)數(shù)據(jù)處理管道、大規(guī)模探索性數(shù)據(jù)分析、機(jī)器學(xué)習(xí)( ML )管道和 ETL 處理。 如果你對(duì) Python 和 Pandas 等庫已經(jīng)比較熟悉,那么 PyFlink 可以讓你更輕松地利用 Flink 生態(tài)系統(tǒng)的全部功

    2024年02月11日
    瀏覽(27)
  • 流批一體計(jì)算引擎-7-[Flink]的DataStream連接器

    流批一體計(jì)算引擎-7-[Flink]的DataStream連接器

    參考官方手冊(cè)DataStream Connectors 一、預(yù)定義的Source和Sink 一些比較基本的Source和Sink已經(jīng)內(nèi)置在Flink里。 1、預(yù)定義data sources支持從文件、目錄、socket,以及collections和iterators中讀取數(shù)據(jù)。 2、預(yù)定義data sinks支持把數(shù)據(jù)寫入文件、標(biāo)準(zhǔn)輸出(stdout)、標(biāo)準(zhǔn)錯(cuò)誤輸出(stderr)和 sock

    2023年04月08日
    瀏覽(22)
  • Flink流批一體計(jì)算(18):PyFlink DataStream API之計(jì)算和Sink

    Flink流批一體計(jì)算(18):PyFlink DataStream API之計(jì)算和Sink

    目錄 1. 在上節(jié)數(shù)據(jù)流上執(zhí)行轉(zhuǎn)換操作,或者使用 sink 將數(shù)據(jù)寫入外部系統(tǒng)。 2. File Sink File Sink Format Types? Row-encoded Formats? Bulk-encoded Formats? 桶分配 滾動(dòng)策略 3. 如何輸出結(jié)果 Print 集合數(shù)據(jù)到客戶端,execute_and_collect方法將收集數(shù)據(jù)到客戶端內(nèi)存 將結(jié)果發(fā)送到DataStream sink conne

    2024年02月11日
    瀏覽(23)
  • Flink流批一體計(jì)算(17):PyFlink DataStream API之StreamExecutionEnvironment

    目錄 StreamExecutionEnvironment Watermark watermark策略簡介 使用 Watermark 策略 內(nèi)置水印生成器 處理空閑數(shù)據(jù)源 算子處理 Watermark 的方式 創(chuàng)建DataStream的方式 通過list對(duì)象創(chuàng)建 ??????使用DataStream connectors創(chuàng)建 使用Table SQL connectors創(chuàng)建 StreamExecutionEnvironment 編寫一個(gè) Flink Python DataSt

    2024年02月11日
    瀏覽(55)
  • Flink流批一體計(jì)算(11):PyFlink Tabel API之TableEnvironment

    目錄 概述 設(shè)置重啟策略 什么是flink的重啟策略(Restartstrategy) flink的重啟策略(Restartstrategy)實(shí)戰(zhàn) flink的4種重啟策略 FixedDelayRestartstrategy(固定延時(shí)重啟策略) FailureRateRestartstrategy(故障率重啟策略) NoRestartstrategy(不重啟策略) 配置State Backends 以及 Checkpointing Checkpoint 啟用和配置

    2024年02月13日
    瀏覽(47)
  • Flink流批一體計(jì)算(12):PyFlink Tabel API之構(gòu)建作業(yè)

    目錄 1.創(chuàng)建源表和結(jié)果表。 創(chuàng)建及注冊(cè)表名分別為 source 和 sink 的表 使用 TableEnvironment.execute_sql() 方法,通過 DDL 語句來注冊(cè)源表和結(jié)果表 2. 創(chuàng)建一個(gè)作業(yè) 3. 提交作業(yè)Submitting PyFlink Jobs 1.創(chuàng)建源表和結(jié)果表。 創(chuàng)建及注冊(cè)表名分別為 source 和 sink 的表 其中,源表 source 有一列

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包