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 の分散データ処理を行う複数のワーカーノード

cluster-overview

(画像は公式ドキュメントより)