Sparkのことについて話す

インタビュー指向のブログは、Q / Aスタイルで提示されます。


質問1:Sparkアーキテクチャを簡単に紹介しますか?

回答1:

Sparkは、さまざまなプロパティ(テキストデータ、グラフデータなど)を使用して、さまざまなデータセットとデータソース(バッチデータまたはリアルタイムストリーミングデータ)のビッグデータ処理のニーズを管理するための包括的で統一されたフレームワークを提供します。

Sparkのコアアーキテクチャを次の図に示します。
ここに画像の説明を挿入
上の図の重要な概念の説明:

Spark Core(つまり、上の図のApache Sparkの2番目のレイヤー)
Spark Coreには、Sparkの基本的な機能、特にRDDを定義するAPI、操作、アクションの両方が含まれています。他のSparkライブラリはRDDとSpark Coreに基づいて構築されています上。

注:RDD、Resilient Distributed DataSet、つまりエラスティック分散データセット。

Spark SQL
は、HiveQL(Apache Hive用のHiveクエリ言語のSQLバリアント)によってSparkと対話するためのAPIを提供します。各データベーステーブルはRDDとして扱われ、Spark SQLクエリはSpark操作に変換されます。

Spark Streaming
は、リアルタイムのデータストリームを処理および制御します。Spark Streamingにより、プログラムは通常のRDDのようなリアルタイムデータを処理できます。

Mllib(機械学習)は
一般的に使用される機械学習アルゴリズムライブラリで、アルゴリズムはRDDのSpark操作として実装されています。このライブラリには、分類、回帰など、大規模なデータセットでの反復演算を必要とするスケーラブルな学習アルゴリズムが含まれています。

GraphX
は、グラフ、並列グラフ操作、および計算を制御するためのアルゴリズムとツールのコレクションです。GraphXは、RDD APIを拡張して、制御グラフを含め、サブグラフを作成し、パス上のすべての頂点にアクセスします。


質問2:Sparkのコアコンポーネントを簡単に紹介しますか?

回答2:

以下に示すように、Sparkコンポーネントの相互作用:

ここに画像の説明を挿入
上の図の重要な概念の説明については、

Cluster Manager
はスタンドアロンモードのマスターノードであり、クラスター全体を制御し、ワーカーを監視します。
YARNモードでは、クラスターマネージャーです。


スレーブノードとして、ワーカーノードはコンピューティングノードの制御とエグゼキューターまたはドライバーの起動を担当します。

ドライバー
はアプリケーションのメイン()関数を実行します。

エグゼキューターエグゼキューター
は、アプリケーションのワーカーノードで実行されるプロセスです。


質問3:Sparkプログラミングモデルを簡単に紹介しますか?

Answer3:

以下に示すようなSparkプログラミングモデル:
ここに画像の説明を挿入

図には、Sparkアプリケーションの書き込みから送信、実行、出力までのプロセス全体が示されています。図で説明されている手順は次のとおりです。

  1. ユーザーは、SparkContextによって提供されるAPI(一般に、textFile、sequenceFile、runJob、stopなどが使用されます)を使用して、ドライバーアプリケーションプログラムを作成します。さらに、SQLContext、HiveContext、およびStreamingContextはSparkContextをカプセル化し、SQL、Hive、およびストリーミングコンピューティングに関連するAPIを提供します。
  2. SparkContextを使用して送信されたユーザーアプリケーションは、最初にBlockManagerとBroadcastManagerを使用して、タスクのHadoop構成をブロードキャストします。次に、DAGSchedulerはタスクをRDDに変換し、DAGに編成します。DAGもさまざまなステージに分割されます。最後に、TaskSchedulerはActorSystemを使用して、タスクをクラスターマネージャーに送信します。
  3. クラスターマネージャー(ClusterManager)は、リソースをタスクに割り当てます。つまり、ワーカーに特定のタスクを割り当てます。ワーカーは、タスクの実行を処理するエグゼキューターを作成し、実行結果はストアストレージに保存されます。スタンドアロン、YARN、Mesos、EC2などはすべてSparkクラスターマネージャーとして使用でき、HDFS、Amzon、S3、Tachyonなどはすべてストアストレージとして使用できます。

質問4:Spark計算モデルとは何ですか?

Answer4:

Sparkコンピューティングモデルの操作図は次のとおりです。
ここに画像の説明を挿入

上の図では、RDDの英語での完全な名前はResiliennt Distributed Datasetsであり、これは柔軟な分散データセットとして変換されます。これは、さまざまなデータ計算モデルの統一された抽象化と見なすことができます。Sparkの計算プロセスは、主にRDDの反復計算プロセスです。RDDの反復計算プロセスはパイプラインに非常に似ています。つまり、上の図の各パーティション(パーティション1からパーティションNまで)はパイプラインと見なすことができます。パーティションの数はパーティションの数の設定に依存し、各パーティションのデータは1つのタスクでのみ計算されます。すべてのパーティションは、複数のマシンノードのエグゼキューターで並行して実行できます。


質問5:Sparkの実行プロセスについて話してください。

回答5:

スパーク操作のフローチャートを次の図に示します。
ここに画像の説明を挿入
上の図の説明

  1. Sparkアプリケーションの実行環境を構築し、SparkContextを開始します。
  2. SparkContextは、リソースマネージャー(スタンドアロン、Mesos、Yarnの場合があります)に適用されて、Executorリソースを実行し、StandaloneExecutorbackendを開始します。
  3. エグゼキュータはSparkContextからタスクを申請します。
  4. SparkContextはアプリケーションをExecutorに配布します。
  5. SparkContextはDAGグラフに組み込まれ、DAGグラフはステージに分解され、タスクセットがタスクスケジューラに送信され、最後にタスクスケジューラがタスクをエグゼキューターに送信して実行します。
  6. タスクはエグゼキューターで実行され、実行後にすべてのリソースを解放します。

質問6:Spark RDDプロセスとは何ですか?

回答6:

Spark RDDのフローチャートは次のとおりです。
ここに画像の説明を挿入
上の図の説明:

  1. RDDオブジェクトを作成します。
  2. DAGSchedulerモジュールは、RDD間の依存関係を計算するための計算に介入し、RDD間の依存関係がDAGを形成します。
  3. 各ジョブは複数の段階に分かれています。ステージを分割するための主な基礎は、現在の計算係数の入力が決定されるかどうかであり、決定された場合は、複数のステージ間のメッセージ送信オーバーヘッドを回避するために同じステージに分割されます。

質問7:Spark RDDとは何ですか?

回答7:

(1)RDDの作成方法

1)Hadoopファイルシステム(またはHive、Cassandra、HBaseなどのHadoopと互換性のある他の永続的なストレージシステム)入力(HDFSなど)から作成されます。
2)新しいRDDを親RDDから変換します。
3)並列化またはmakeRDDを使用して、スタンドアロンのデータを分散RDDとして作成します。

(2)RDDの2つの演算子(変換とアクション)

RDDの操作演算子には、変換とアクションの2種類があります。

1)変換:変換操作は計算が遅れます。つまり、あるRDDから別のRDDへの変換操作はすぐには実行されず、アクション操作があるまで操作はトリガーされません。
ここに画像の説明を挿入

2)アクション:アクションオペレーターは、Sparkをトリガーしてジョブを送信し、データをSparkシステムに出力します。
ここに画像の説明を挿入

207の元の記事を公開 80を賞賛 120,000ビュー

おすすめ

転載: blog.csdn.net/qq_36963950/article/details/105336060