糸提出プロセスのリソース管理に関するフリンク

Flink on Yarnには、2つの実行方法があります。1つはセッションクラスターモードで、もう1つはプレジョブクラスターモードです。


フリンクセッション(セッションクラスター)

  1. 一元化されたメモリ管理モード:YarnでFlinkクラスターを初期化し、指定されたリソースを開いてから、このFlinkヤーンセッションでFlink Jonを送信します。つまり、送信されたジョブの数に関係なく、これらのジョブは最初のリソースでヤーンを共有します。でリクエストされました。このFlinkクラスターは、手動で停止しない限り、Yarnクラスターに存在します。
  2. ヤーンでデーモンを起動して複数のジョブを開始します。つまり、アプリケーションマスターを起動して複数のジョブを管理します。
  3. このモードは、yarn-session.sh(リソース開発)+ flink run(タスクの送信)の2つのステップに分かれています。
  4. ./yarn-session.sh -n 4 -jm 1024 -tm 5120 -s 5 -nm yarn-session-jobs -d

パラメータの説明:

  • -n:タスクマネージャーの数を指定し、タスクマネージャーの数を指定します
  • -jm:ジョブマネージャーが占有するメモリの量(MB単位)
  • -tm:各タスクマネージャーが占有するメモリをMB単位で指定します
  • -s:各タスクマネージャーが使用できるCPUコアの数を指定します
  • -nm:アプリケーションの名前を指定します
  • -d:バックグラウンドで開始し、セッションが開始された後、プロセスが閉じられます

起動プロセスの説明:

  1. セッションの開始後、yarnは最初にコンテナを割り当ててAPPマスターとジョブマネージャを開始します。占有メモリは-jmで指定されたメモリサイズであり、CPUは1コアです。
  2. ジョブを開始する前に、jobmanagerはtaskmanagerを開始しません(jobmanagerは、ジョブの並列度、つまり占有スロットに応じてタスクマネージャーを動的に割り当てます)
  3. APPマスターにタスクを送信する
  4. ./flink run -p 3 -yid application_id -d -c com.xxx ~/jar/xxx-1.0-SNAPSHOT.jar指定されたAPPマスターへのジョブを開始するために使用されます

注:ジョブパラメーターは-cの前に書き込む必要があります。そうしないと、指定されたパラメーターは機能しません。

パラメータの説明:

  • -p:タスクの並列度を指定します。プログラムコードで並列度を指定した場合、ここでの並列度パラメーターは効果がありません。
  • -yid:タスクが送信されるapplication-idを指定します。デフォルトは、このノードに送信された最新のアプリケーションです。
  • -c:ジョブのメインエントランス+ jarパス

フリンク実行(ジョブクラスターごと)

単一のジョブを開始し、それをヤーンクラスター、つまり単一のジョブと単一のセッションに送信して、完全なリソースの分離を実現します。
ジョブを開始するコマンドは、yarn-sessionのコマンドとは異なります。-myarn-clusterを指定することにより、パラメーターはセッションと比較して-yになります。

./flink run \
-m yarn-cluster \
-yn 2 \
-yjm 1024  \
-ytm 3076 \ 
-p 2 \
-ys 3 \
-yD name=hadoop \
-ynm RTC_KB_FLINK_TEST \
-yqu rt_constant \
-c com.kb.rt.Test02 ~/jar/kb-1.0-SNAPSHOT.jar   

パラメータの説明:

  • -m:yarn-clusterは、単一のセッションを開始し、単一のジョブを送信することを意味します
  • -yn:タスクマネージャーの数
  • -yjm:jobmanagerのメモリ使用量
  • -ytm:各タスクマネージャーのメモリ使用量
  • -ys:各タスクマネージャーが使用できるCPUコアの数
  • -ynm:アプリケーション名
  • -yqu:ジョブキューの名前を指定します
  • -c:プログラムのメインエントランス+ jarパス
  • -p:タスクの並列度を指定します
  • -yD:動的パラメータ設定

タスク提出プロセス

ここに画像の説明を挿入

  1. flink-clientはタスクをyarnに送信し、依存するすべてのjarと構成をhdfsにアップロードします
  2. ResourceManagerからリソースを申請するために、ResourceManagerには主にApplicationManagerとresourceSchedulerの2つの部分が含まれています。
  3. ApplicationManagerはApplicationMasterを起動し、ResourceSchedulerはApplicationMasterの実行に必要なコンテナを割り当てます。
  4. ApplicationMasterでFlinkのJobManagerを起動し、ポーリング方式でResourceManagerからRPCを介してリソースを申請します。
  5. ResourceManagerはリクエストを受信すると、対応するコンテナを割り当てて、将来TaskManagerを開始し、対応するjarと設定をhdfsからダウンロードします。
  6. ApplicationMaterは、タスクを開始するために対応するコンテナを必要とします。
  7. 対応するJobManagerとTaskManagerが開始されます。

Flinkリソース管理

オペレーターチェーン

データフロー処理プロセス全体で、演算子としても理解できる多くの演算子があります。隣接する演算子の間には一定の関係があります。隣接する演算子を接続してチェーンを形成することは、flinkの効率的な分散コンピューティングの鍵です。スイッチングを減らすことができます。スレッドとメッセージのシリアル化および逆シリアル化の間。

ここに画像の説明を挿入

ono-to-oneストリーム:ソースとマップの間では、パーティションの変更やパーティション間のデータ交換はありません。
ストリームの再配布:マップとキーバイ/ウィンドウ間、およびキーバイ/ウィンドウとシンク間で、パーティション間またはパーティション数のデータ交換に変更があります。
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入


スロット

  1. スロットは通常、タスクマネージャーの固定リソースサブセットまたはスレッドを指します。タスクマネージャに3つのスロットがある場合、各スロットはメモリホスティングの1/3を管理します。

  2. スロットが存在するため、メモリリソースはメモリ競合を起こさず、スロットはメモリを分離しますが、CPUは分離されないことに注意してください

スロットと並列処理は異なります。スロットは静的な概念です。つまり、タスクマネージャーは並列で実行できます。並列処理は、プログラムが実行されたときにのみ意味があります。動的な概念であり、プログラムの実際の使用を指します。並行性能力ですが、2つは関連しています。並列処理は、スロットの数より大きくすることはできません。

共有スロット:SlotSharingGroupおよびCoLocationGroup

デフォルトでは、サブタスクがすべて同じジョブからのものであり、同じSlotSharingGroupを持つ異なるタスクのサブタスクを持っている場合、Flinkはサブタスクがスロットを共有することを許可します(デフォルト名はデフォルトです)。次に、異なる名前のタスクのサブタスクがスロットで共有されるため、スロットには完成したパイプラインを保持する機会があります。したがって、デフォルトのスロット共有の場合、ジョブの起動に必要なスロットの数は、ジョブ内のオペレーターの最大並列処理に等しくなります。

ここに画像の説明を挿入
上の図は、図の左下隅に示されているsource-map-reduceモデルジョブです。ここで、sourceとmapの並列処理は4で、reduceの並列処理は3です。各円はサブタスクを表し、ジョブ全体でのオペレーターの最大並列処理は4です。タスクが実行のために送信された場合、ジョブには4つのスロットが必要であることがわかります。ジョブが2つのtaskManagerに送信された場合、各タスクマネージャーは図の右側に示されているように、3つのスロットがあります。そのうちの3つのスロットには、完全なsource-map-reduceモデルを備えたパイプラインがあります。ただし、データシャッフルのプロセスは描画されません。

ここに画像の説明を挿入
上の図には、source-map、keyBy / window / apply、sinkのモデルジョブが含まれています。ここで、source-mapの並列処理は6、keyBy / window / applyの並列処理は6、sinkの並列処理は1です。送信にはジョブが必要です。6つのスロットがあります。割り当て後、左側の最初のスロットには3つのサブタスクを実行する完全なパイプラインがあり、残りの5つのスロットはそれぞれこれらの2つのサブタスクを実行し、最後にデータがシンクに送信されます。出力。


フリンク実行パラメーター

参数说明
Action "run" compiles and runs a program.
Syntax: run [OPTIONS] <jar-file> <arguments>

"run" action options:
 -c,--class <classname>                         Class with the program entry
                                                point ("main" method or
                                                "getPlan()" method. Only
                                                needed if the JAR file does
                                                not specify the class in its
                                                manifest.
 -C,--classpath <url>                           Adds a URL to each user code
                                                classloader  on all nodes in
                                                the cluster. The paths must
                                                specify a protocol (e.g.
                                                file://) and be accessible
                                                on all nodes (e.g. by means
                                                of a NFS share). You can use
                                                this option multiple times
                                                for specifying more than one
                                                URL. The protocol must be
                                                supported by the {
    
    @link
                                                java.net.URLClassLoader}.
 -d,--detached                                  If present, runs the job in
                                                detached mode
 -m,--jobmanager <host:port>                    Address of the JobManager
                                                (master) to which to
                                                connect. Use this flag to
                                                connect to a different
                                                JobManager than the one
                                                specified in the
                                                configuration.
 -p,--parallelism <parallelism>                 The parallelism with which
                                                to run the program. Optional
                                                flag to override the default
                                                value specified in the
                                                configuration.
 -q,--sysoutLogging                             If present, suppress logging
                                                output to standard out.
 -s,--fromSavepoint <savepointPath>             Path to a savepoint to reset
                                                the job back to (for example
                                                file:///flink/savepoint-1537
                                                ).
 -z,--zookeeperNamespace <zookeeperNamespace>   Namespace to create the
                                                Zookeeper sub-paths for high
                                                availability mode
Options for yarn-cluster mode:
 -yD <arg>                            Dynamic properties
 -yd,--yarndetached                   Start detached
 -yid,--yarnapplicationId <arg>       Attach to running YARN session
 -yj,--yarnjar <arg>                  Path to Flink jar file
 -yjm,--yarnjobManagerMemory <arg>    Memory for JobManager Container [in
                                      MB]
 -yn,--yarncontainer <arg>            Number of YARN container to allocate
                                      (=Number of Task Managers)
 -ynm,--yarnname <arg>                Set a custom name for the application
                                      on YARN
 -yq,--yarnquery                      Display available YARN resources
                                      (memory, cores)
 -yqu,--yarnqueue <arg>               Specify YARN queue.
 -ys,--yarnslots <arg>                Number of slots per TaskManager
 -yst,--yarnstreaming                 Start Flink in streaming mode
 -yt,--yarnship <arg>                 Ship files in the specified directory
                                      (t for transfer)
 -ytm,--yarntaskManagerMemory <arg>   Memory per TaskManager Container [in
                                      MB]
 -yz,--yarnzookeeperNamespace <arg>   Namespace to create the Zookeeper
                                      sub-paths for high availability mode

-n 10 一共启动10个TaskManager节点

-jm 1024 JobManager的内存大小为1024M
 
-tm 2048 TaskManager的内存大小为2048M
-d 使用detached模式进行部署(部署完成后本地命令行可以退出)
-qu default 部署到YARN的default队列中

おすすめ

転載: blog.csdn.net/qq_43081842/article/details/112153724