RDD操作機構でスパーク

1. RDDの設計と動作原理

スパークのコアは、各スパークコンポーネントがシームレス従って同じアプリケーションで大きなデータ・コンピューティング・タスクを完了し、統合することができるRDD変換動作およびアクションに基づいて、統一された抽象RDD上に構築されています。

1.1。RDDコンセプト

RDDは、オブジェクトの分散収集され、本質的に読み取り専用パーティションレコードの集合体である高度に制約の共有メモリ・モデルを提供し、直接変更することはできません。各RDDが複数のパーティションに分割することができ、各パーティションは、データセグメントのセットであり、そしてRDD異なるパーティションがクラスタ内の異なるノード上に格納することができ、クラスタ内の異なるノード上で並列に計算することができます。

RDDは、「アクション」(アクション)、及び「変換」の2種類(変換)に、操作をサポートするために、共通のデータ操作の豊富なセットを提供し、前者はRDDを指定する指定されたフォームの計算および出力を行うために使用されています間の相互依存。RDDは、変換インターフェースは非常に簡単であり、同様である提供しmapfiltergroupByjoinデータ項目の修飾きめ細かいではなく、その他のデータ変換動作の粗いです。データセット要素は、Webアプリケーション、増分ウェブクローラなどのアプリケーションに非同期、きめの細かい状態、適していない必要があるためにこのように、バッチ・アプリケーションRDDのために、より適しているのは同様の動作を行います。

次のようにRDD典型的な実装方法は次のとおりです。

  1. RDDを作成するための外部データソース(またはメモリのセット)を読みます。
  2. 「変換」の一連の動作の後RDD、各変換次の使用を供給する、異なるRDDを有することになります。
  3. 最後RDD「アクション」操作後、および指定されたデータ型と値を出力します。

RDDはRDDの実行中に、すべての変換操作は、実際の操作は意志だけで、レコードの依存関係を実行しないであろうことを不活性コールを使用して、唯一の真の計算をトリガーする操作のアクションを満たし、前に従い、依存関係の最終的な結果を得るために。

アップロード-画像-563318.png

ある最終F.を生成するために、以下に示すようにRDDは、2つの入力、すなわちAとCを作成開始から以下の実施例、RDDの実際の実装プロセスを説明し、その後、一連の動作を介して変換RDD。これらの変換操作の実行中になお実際の計算を実行し、また創造のプロセスに基づいて実際の計算、およびだけで記録されたデータトラックの流れを実行しませんでした。Fは、操作が行われ、出力データを生成しているとき、スパークが非巡回グラフ(DAG)向け依存性の発生をRDDます作用し、実際の計算を実行する出発点から始まります。得られた中間結果を保存する必要がないように、この機構RDD不活性コール、スイッチング動作であるが、そのまま次の処理動作をパイプラインに流れます。

アップロード-画像-61893.png

1.2。RDDのプロパティ

次のように全体的に、主な理由は、RDDスパークを使用した後、効率的な計算を可能にします。

  1. 効率的なフォールトトレランス。RDDの設計では、データのみを経由冗長データを必要とせずに、私たちはRDDとの関係に直接依存失われたパーティションを取得する再計算することができることを意味子RDD RDD方式に親からの変換により変更することができますファッションよりも。そして、それは、特定のデータと大幅にオーバーヘッドフォールトトレラントデータ集約型アプリケーションを減らし、きめの細かい操作の多様性を、ログインする必要はありません。

  2. 持続性メモリに中間結果。メモリ内のRDD動作複数の間のデータ転送のために、ディスク読み出し、不要なオーバーヘッドを回避するディスク書き込み上に格納する必要がありません。

1.3の間の依存関係。RDD

RDD異なる操作はRDDに異なるパーティションにつながる可能性が狭い依存性(狭依存性)および幅依存性(ワイド依存性)に分け、異なる依存関係を生成します。狭い依存は、多対1の関係や親と子RDD RDDとの関係を表す、などの操作が持っているmapfilterunion等;と言っ間の広い対多の関係に依存親子RDDとRDDすなわち操作が持っているなど、サブ親RDD RDD複数に変換groupByKeysortByKeyなどが挙げられます。

アップロード-画像-606443.png

狭依存RDDのために、すべての親パーティションは、データネットワークとの間で混合生じさせることなく、パイプライン方式で計算することができます。ワイド依存、通常付随シャッフル処理、ノード間でシャッフルし、その後、親パーティションのすべてのデータを計算するために、すなわち、最初の必要性のためにRDD。したがって、データ回復は、狭い失われたパーティションはRDD親パーティションに応じて再計算する必要があり、異なるノードで再計算並行して行うことができるのみに依存する場合。ワイド依存するため、通常、単一のノード障害再計算処理を意味するパーティションRDD親、大きなオーバヘッドの複数を含みます。また、また、それがスパークし、チェックポイント・データ・ロギングは、障害回復中にステージが戻って先頭にトレースする必要がないように、RDDのための中間永続性を提供します。リカバリ時に、スパークチェックポイントのオーバーヘッドとデータが自動的に最高の復旧戦略を選択するRDDパーティションのコストを比較することによって、再計算されます。

分裂の1.4。フェーズ

、DAGに分析を逆広いオフに依存して発生したスパークはRDD DAGのそれぞれの依存関係を解析することにより生成され、その後、パーティション間のRDDそれぞれの依存関係による分析を分割する方法を決定し、特定の分割方法でありますオープン、狭い顔依存電流RDDは、現在のステージに入れ、パイプライン計算を達成することができる、同一の分割段階でできるだけ狭い依存するであろう。図の例では、読み出しデータは、第1 DAG、変換動作および動作に従って生成されます。そして次に場合の動作実行挙動、DAG分析を逆変換をオフに幅から依存要求されるBおよびB、FからGへの変換が広く、依存しているので、そう3つの段階に分け。図は、各段階の後に、「ステージ」を複数のDAGを入れ互いにシャッフル組成物との間のタスクの依存関係を設定していない関連タスクの基を表します。タスクの各セットは、タスクスケジューラのタスクで処理タスクスケジューラ(TaskScheduler)に提出されるには、エグゼキュータの実行を配布されます。

アップロード-画像-772555.png

1.5。プロセスRDDを実行します

上記の概念のRDD、関係および位相の依存性を記述し、先に導入されたスパークと連動して動作の基本的な流れ、ここでの処理について、次にRDDにおいて加算(以下に示すように)Sparkのアーキテクチャーを実行します。

  1. RDDはオブジェクトを作成します。
  2. RDD間の依存関係を計算するためのSparkContext責任、DAGを構築します。
  3. DAGの責任は、複数のステージに分解逆DAGSchedule、複数のタスクを含む各ステージは、各タスクは、作業ノード上のタスクスケジューラ実行エグゼキュータに分散させることができます。

アップロード-画像-64896.png

おすすめ

転載: www.linuxidc.com/Linux/2019-06/159052.htm