間FLINKタスクデータ交換

FLINKデータ交換は、以下の方針に基づいて設計されています:

  制御フロー(すなわち、送信メッセージの交換を開始する)1.データ交換は、受信機によって開始される、元のMapReduceと同じ。

  2.データ交換、ケーブルを介して、すなわち、実際のデータ伝送のためのデータストリームを、IntermediateResultに抽象化し、プラガブルです。これは、システムが同じ実装でも、ストリーミングデータ転送とバッチデータ伝送をサポートして使用できることを意味します。

:データ交換も含めた役割の数に関与しています

  1.JobManager、タスクスケジューリングを担当するマスターノード、異常からの回復、タスクの調整、およびデータ構造などExecutionGraphによってジョブパノラマを保存します。

  2.TaskManagers、ワーキングノード、並列スレッドで複数のタスクを実行する責任があり、各々が(タスク間で共有)通信マネージャ(TM)とMemoryManagerを含む(タスク間で共有されます)。TCPを介したTMデータ接続の間の相互作用。

FLINKで、データ交換をTMとしないタスクとの間で、同じマルチプレックス(TM)内の異なるタスクが同一のネットワークに接続される間に生じることに留意されたいです。

 

 ExecutionGraphは、ジョブの計算に関する情報が含まれているデータ構造の実行「基本的な事実を。」これは、生成された頂点タスク(ExecutionVertex)タスクデータ(IntermediateResultPartition)組成物を表現する計算の中間結果を表します。それらはExecutionEdges(EE)を消費する結果により中間頂点に連結されました:

 

 

これらは、論理的なデータ構造JobManager存在しています。彼らは、これらのデータ構造上の実行時に相当する構造、実際の処理責任タスクマネージャを持っています。ResultPartition IntermediateResultPartition時間と呼ばれる操作に相当します。

ResultPartition(RP)は、すなわち、単一のタスクによって生成され、BufferWriter書き込まれたデータブロックを示しています。RPは、子パーティション(RS)の結果のコレクションです。これは、例えば、別の受信者に送信されるデータを区別低減または場合パーティション洗浄混合物に参加することです。

ResultSubpartition(RS)が操作者によって作成されたデータのパーティションを表し、そしてロジックはオペレータで受信したデータを転送します。RS特定の実装では、システムは、様々なデータ伝送プラグ可能な機構をサポートできるようにすることである実際のデータ転送ロジックを決定します。例えば、PipelinedSubpartition支持パイプフローデータ交換。SpillableSubpartitionは停止実装で、大量のデータ交換をサポートしています。

InputGate:RP受信者の論理的同等。これは、データバッファを収集し、上流に転送する責任があります。

InputChannel:側の論理的同等を受けRS。特定のパーティションにデータバッファを収集するために責任があります。

シリアライゼーションおよびデシリアライゼーションは、元のバイトバッファに確実の種類を記録し、その逆、複数のバッファなどを横切って記録するプロセスであろう。

データ交換のための制御フロー

 

 絵は、単純な2つの並列タスクとジョブをマップ-減らす表します。私たちは、第3のノードに2つのタスクマネージャ、二つのタスク(タスクマップおよび削減タスク)2つの異なるノードで実行して、JobManagerの実行を持っています。私たちは、M1とR2の転送開始の間の作業に特化。太い矢印を使用して、細い矢印はメッセージを表す用い、データ伝送を示しています。まず、M1はResultPartition(RP1)を(矢印1)を生成します。(我々は後で説明します)消費のために利用できるRPは、それはJobManagerを通知しますとき(矢印2)。パーティションの意図された受信者のパーティション(タスクR1およびR2)を気づかJobManagerする準備ができています。あなたは一人の受信者を予定していない場合は、実際には、展開タスクをトリガーする(矢印3A、3B)。次いで、受信機は、データRP(矢印4aおよび4b)を要求します。これは、ローカル(ケース5a)または(5b)は、データ送信のTaskManagersネットワークスタックタスクによって開始(矢印5aおよび5b)の間です。RPは、その可用性JobManagerを通知することを決定したとき、プロセスはある程度の自由度を有します。事前通知RP1 JM自体が完全に生成された(およびファイルに書き込まれていてもよい)場合、例えば、データ交換がほぼ同等量のHadoopの実施交換です。RP1はすぐに最初のレコードの生成後JMを通知した場合、我々は、データ交換をストリーミングすることができるようになります。

2つのタスク間のバイトのバッファの転送

 

 

 
この画像は、より詳細に生産者から消費者への輸送中に記録されたデータのライフサイクルを記述する。最初に、MapDriverは(コレクタによって収集された)レコードを生成し、これらのレコードはRecordWriterオブジェクトに転送されます。RecordWritersは、多くのシリアライザ(RecordSerializerオブジェクト)が含まれ、各タスクの消費者は、レコードを消費することがあります。例えば、ランダム再生や放送、シーケンスの数と同じくらい、ユーザーのタスクの数。シリアライザを配置するために1つ以上のレコードを選択しChannelSelector。例えば、放送録画場合、それらは、シーケンスプログラムの各々に配置されます。レコードは、パーティションでハッシュ化されている場合は、ハッシュ値ChannelSelector記録の評価とは、適切なシリアライザを選択します。

バイナリ表現にシリアライザ記録シーケンス、およびそれらの固定サイズのバッファ(複数のバッファを横切って記録する)に置きます。これらのバッファとBufferWriterに引き渡さとResultPartition(RP)に書き込みます。特定のユーザのコレクションパーティションにサブバッファで構成RPいくつかの子パーティション(ResultSubpartitions-RS)。図面では、第2のバッファは、(タスクマネージャ2)減速機に送られ、RS2に入れました。これはバッファので、利用可能なRS2あるので(この現象は、流れ分布を達成することに留意されたい)、およびJobManagerを通知します。

JobManager RS2は、ユーザを見つけ、およびTaskManager 2使用可能なデータブロックを通知します。このバッファにダウン伝播する送信TM2メッセージは順番に送信RS2を開始することができるネットワークに通知InputChannelを受けるべきです。次に、RS2は、順番に網状に輸送するために引き渡さバッファTM1ネットワークスタックに転送されます。Fiは長時間実行され、代わりに個々のタスクの間、タスクマネージャの間にあります。

(複数のICを含む)InputGate到着し、最後に再cordDeserializerの端部にInputChannel(受信側IRPQに相当)から出発して、同様のオブジェクト階層を通過するバッファTM2を受け取ると、からレコードバッファの生成の種類、及び、この場合ReduceDriverにタスクを受信します。

おすすめ

転載: www.cnblogs.com/029zz010buct/p/11637463.html