RDD操作機構

1. RDDの設計と動作原理

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

実際には、多くの反復アルゴリズムとインタラクティブデータマイニングツールがあり、これらのシナリオに共通の中間結果は、すなわち、出力段は、次のステージの入力として使用される、異なるコンピューティング段階の間に再利用されることです。中間結果のHadoopのMapReduceのフレームワークはでHDFSに書き込まれ、それは、データレプリケーション、ディスクIOとシリアライズコストの多くをもたらした、と通常は特定のコンピューティング・モデルをサポートしています。開発者は、特定のアプリケーションロジックは、変換プロセスのシリーズとして表現される基本的なデータの分散性を心配する必要がないようにRDDとは、抽象データ構造を提供し、異なるRDD間の変換動作が依存関係を形成し、達成することができますこれにより、中間結果の記憶を回避する導管は、大幅複製を減少させ、オーバーヘッドディスクIOを配列します。

1.1。RDDコンセプト

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

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

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

外部データソースを読み取る(またはメモリのセット)RDDを作成する;
; RDD「スイッチング」の一連の動作を介して、各変換は、次を使用して供給し、異なるRDDを有することになる
「アクション」操作によって最後RDD処理、及び指定されたデータ型と値を出力します。
RDDはRDDの実行中に、すべての変換操作は、実際の操作は意志だけで、レコードの依存関係を実行しないであろうことを不活性コールを使用して、唯一の真の計算をトリガーする操作のアクションを満たし、前に従い、依存関係の最終的な結果を得るために。

RDD RDD操作機構の動作機構

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

RDD RDD操作機構の動作機構

1.2。RDDのプロパティ

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

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

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

データは、不要なオブジェクトシリアライゼーションおよびデシリアライゼーションのオーバーヘッドを回避するため、Javaオブジェクトを格納することができます。

1.3の間の依存関係。RDD

RDD異なる操作はRDDに異なるパーティションにつながる可能性が狭い依存性(狭依存性)および幅依存性(ワイド依存性)に分け、異なる依存関係を生成します。ここで、親と子RDD RDDとの間の狭い依存関係または外部キーで表されるものが、マップ、フィルタ、組合等を含む操作がある、と幅、親と子RDD RDD間の依存関係を言いました動作を含む対多リレーションシップ、サブRDD RDD複数に変換される親は、同様にgroupByKey、sortByKeyを有します。

RDD RDD操作機構の動作機構

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

分裂の1.4。フェーズ

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

RDD RDD操作機構の動作機構

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

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

RDDは、オブジェクトを作成、
DAGを構築RDD、間の依存関係を計算するSparkContext責任;
DAGSchedule DAGの責任は、複数のタスクを含む各ステージは、各タスクがスケジューラを分散させることができ、複数のステージに分解逆Executorのノード上で実行されます。
RDD RDD操作機構の動作機構

おすすめ

転載: blog.csdn.net/weixin_43226231/article/details/94338345