LoginSignup
3
3

More than 5 years have passed since last update.

Spark のアーキテクチャ概要

Last updated at Posted at 2017-04-03

Spark アプリケーションの実行の仕組みについて、Apache Spark のサイトを読んでみてもどうもよくわからないので、自分なりにまとめてみました。まずは、概念的ですがSpark のコンポーネントについてです。

Spark のコンポーネント概要

spark-component.png

これは、Apache Spark のサイトでも書かれている内容 (Cluster Mode Overview) とほとんど同じで、概念的な各コンポーネントのつながりを書いています。また各コンポーネントの概要をまとめると、

Driver Program

Spark アプリケーションの実行管理や制御を行うもので、main メソッドを含むプロセスとなります。またドライバはSpark アプリケーション毎に1つ存在し、アプリケーションの環境(SparkContext)を作る役割を担っています。

Cluster Manager

Spark アプリケーションをクラスタ上で実行するためには、クラスタのリソース(メモリやCPU など)の確保を行ったり、スケジューリング管理を行う必要があります。それを行うのがCluster Manager の主な役目となります。ややこしいことにCluster Manager は以下の3つがあり、その内のどれかを使用することになっています。
- Standalone: Spark に標準でついているシンプルなもの
- YARN: Hadoop MapReduce や HBase やStorm など多様な分散アプリケーションを実行するために作られた、汎用性を持ったクラスターマネージャです。
- Mesos: (触ったことが無いのですが)YARNと同じく汎用的に利用できるクラスタマネージャです。

ワーカーノード

Spark アプリケーションのコードを実行するノードです。

Executor

JVM のプロセスで、ドライバから依頼されたTask を実行します。

Task

Executor 内で実際の処理を行うスレッドです。

Sparkアプリケーション

Driver Program とExecutor を含むクラスタ上で実行されるユーザプログラムです。

のようになります。

クラスタマネージャにより、クラスタの管理やアプリ制御のやり方が少しづつ変わってきますが、上記の基本的概念や、大筋の動きは同じとなるかと思います。

また、クラスタマネージャが実行時に大きな役割を果たしていると思いますので、次回はYARN 上でのSpark の動作について調べてみて書いてみようと思います。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3