1. Spark の構成要素
+-----------+ +-----------------+ +----------+ +---------+
| Spark SQL | | Spark Streaming | | Spark ML | | Graph X |
+-----------+ +-----------------+ +----------+ +---------+
+--------------------------------------------------------+
| Spark Core |
+--------------------------------------------------------+
+--------------------------------------------------------+
| Cluster Manager (Standalone Scheduler / YARN / Mesos) |
+--------------------------------------------------------+
Spark Core
- タスクのスケジューリング
- メモリの管理
- 障害発生時の回復
- ファイルシステムとのやり取り
- RDD(後述)を定義
といった Spark の基本機能を統括
Spark SQL
構造化データを扱うパッケージ。
SQL や HQL(Hive Query Language)を使ってデータに対するクエリを実行できる。
Spark Streaming
Web サーバのログファイルなど、データストリームを処理するパッケージ。
Spark ML (MLlib)
機械学習ライブラリ。
- 機械学習アルゴリズム
- 分類
- 回帰
- クラスタリング
- 特徴化
- 変換
- 次元削減
- 特徴抽出
- 統計・線形代数・データ処理
Graph X
グラフ操作パッケージ。
有向プロパティグラフを生成・操作できる。
クラスタマネージャ
分散処理アプリケーションに対し、クラスタのリソースを割り当てる。
Spark 自身の持つ Standalone Scheduler の他、Mesos, YARN が利用できる。
2. Spark の中核概念
RDD
Spark で扱う、複数のノードにまたがって配置された分散データコレクションのこと。
Resilient Distrubuted Dataset(耐障害性分散データセット) の略。
ドライバとエグゼキュータ
Spark アプリケーションでは、org.apache.spark.SparkContext
オブジェクトを通して Spark にアクセスする。
- ドライバ
- アプリケーションの main 関数を持ち、クラスタ上の並列処理をエグゼキュータに指示する
- エグゼキュータ
- ドライバによって管理される、RDD の分散データ処理を行う複数のワーカーノード
(画像は公式ドキュメントより)