ベストアンサー
フレームワーク全体に関すること:現時点では、ApacheSparkは競合他社より一歩進んでいます。 、さまざまな非常に便利なツール(2つだけ挙げるとSpark SQLとMLlib)の実装(および統合)や、RDDに中間データを格納する機能などのいくつかの特性が原因です。この動機のために、多くの開発者がそれに集中しており、基盤となるテクノロジーに新たなブレークスルーが現れるまで、競合他社は無視できると思います。
異なる、単一の実装を検討する場合Apache Sparkでは、いくつかの競合他社を特定できます。H2OはSpark MLlibの挑戦者であり、Storm(Joeによって指摘されています)はSparkストリーミングの代替手段であり、SparkSQLと比較できるSQLのようなエンジンがいくつかあります。 。
回答
これが私が使用するApacheSparkの専門用語です。
ジョブ:-HDFSまたはローカルから入力を読み取り、データに対して計算を実行し、出力データを書き込むコード。
ステージ:-ジョブはステージに分割されます。 。ステージは、マップステージまたはリデュースステージとして分類されます(Hadoopで作業したことがあり、相互に関連付けたい場合は、理解しやすくなります)。ステージは計算境界に基づいて分割され、すべての計算(演算子)を単一のステージで更新することはできません。これは多くの段階で発生します。
タスク:-各段階にはいくつかのタスクがあり、パーティションごとに1つのタスクがあります。 1つのタスクが1つのエグゼキュータ(マシン)上のデータの1つのパーティションで実行されます。
DAG-DAGは有向非巡回グラフの略で、現在のコンテキストでは演算子のDAGです。
Executor -タスクの実行を担当するプロセス。
ドライバー-Sparkエンジンを介してジョブを実行する責任を負うプログラム/プロセス
マスター-ドライバープログラムが実行されるマシン
Slave-Executorプログラムが実行されるマシン
sparkのすべてのジョブは一連の演算子で構成され、一連のデータで実行されます。ジョブ内のすべての演算子は、DAG(有向非巡回グラフ)を作成するために使用されます。 DAGは、可能な場合は演算子を再配置および結合することによって最適化されます。たとえば、マップ操作とそれに続くフィルター操作を含むSparkジョブを送信する必要があると仮定します。 Spark DAGオプティマイザーは、これらの演算子の順序を並べ替えます。これは、フィルタリングによって、マップ操作を受けるレコードの数が減るためです。
Sparkのコードベースは小さく、システムはさまざまなレイヤーに分割されています。各層にはいくつかの責任があります。レイヤーは互いに独立しています。
- 最初のレイヤーはインタープリター、SparkはScalaインタープリターを使用しますが、いくつかの変更が加えられています。
- Sparkコンソールにコードを入力すると(RDDの作成と演算子の適用) )、Sparkは演算子グラフを作成します。
- ユーザーがアクション(収集など)を実行すると、グラフはDAGスケジューラーに送信されます。 DAGスケジューラーは、演算子グラフを(マップおよび縮小)ステージに分割します。
- ステージは、入力データのパーティションに基づくタスクで構成されます。DAGスケジューラーは、オペレーターをパイプライン化してグラフを最適化します。マップ演算子は単一のステージでスケジュールできます。この最適化はSparksのパフォーマンスの鍵です。DAGスケジューラーの最終結果は一連のステージです。
- ステージはタスクスケジューラ。タスクスケジューラは
クラスターマネージャー。(SparkStandalone / Yarn / Mesos)。タスクスケジューラは、ステージ間の依存関係を認識していません。
- ワーカーは、スレーブでタスクを実行します。新しいJVMは次のように開始されます。 JOB。ワーカーは渡されたコードについてのみ知っています。
Sparkは処理するデータをキャッシュするため、hadoopよりも100倍高速です。SparkはマルチスレッドにAkkaを使用します。実行状態の管理、タスクのスケジュール設定。Jettyを使用してファイル(Jarおよびその他のファイル)の共有、Http Broadcast、Spark Web UIの実行。Sparkは高度に構成可能であり、Hadoopエコシステムに既存のコンポーネントを利用できます。これにより、スパークは飛躍的に成長し、少しの時間で多くの組織がすでに本番環境で使用しています。
物事をより詳細に理解するには、