第2章. スパーク入門
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
Apache Sparkの歴史が一通り終わったので、いよいよSparkの使用と応用を開始する!この章では、クラスタのコアアーキテクチャ、Sparkアプリケーション、DataFramesとSQLを使ったSparkの構造化APIについて説明する。また、Sparkをすぐに使い始められるように、Sparkのコアとなる用語や概念についても触れていく。まずは基本的な背景情報から始めよう。
Sparkの基本アーキテクチャ
通常、 「コンピューター」といえば、自宅や職場の机の上に置いてある1台のマシンを思い浮かべるだろう。このマシンは、映画を見たり表計算ソフトを使ったりするのには全く問題なく動作する。しかし、多くのユーザがどこかで体験していると思われるが、コンピュータの性能が十分でないこともある。特に難しいのがデータ処理だ。単一のマシンでは、膨大な量の情報に対してコンピューティングリソースを実行するのに十分なパワーとリソースを持っていない(あるいは、ユーザはおそらく計算が終わるまで待つ時間がない)。 クラスタ(コンピュータのグループ)は、多くのマシンのリソースをプールし、あたかも1台のコンピュータであるかのように、すべての累積リソースを使用する能力を与えてくれる。さて、マシンのグループだけでは力不足で、マシン間で作業を座標調整するフレームワークが必要だ。Sparkはまさにそれを実現し、コンピュータのクラスタ全体でデータに対するタスクの実行を管理し、座標を調整する。
Sparkがタスクを実行するために使用するマシンのクラスタ( )は、Sparkのスタンドアローンクラスタマネージャ、YARN、またはMesosのようなクラスタマネージャによって管理される。Sparkアプリケーションをこれらのクラスタ・マネージャに提出すると、クラスタ・マネージャがアプリケーションにリソースを付与し、作業を完了できるようにする。
スパーク・アプリケーション
Spark アプリケーションは、ドライバ・プロセスと エグゼキュータ・プロセスのセットで構成される。 ドライバプロセスは、main() 関数を実行し、クラスタ内のノードに配置され、Spark Application に関する情報の保持、ユーザのプログラムまたは入力へのレスポンス、および(後述する)エクゼキュータ間での作業の分析、分散、およびスケジューリングの 3 つの役割を担う。Sparkアプリケーションの心臓部であり、アプリケーションのライフタイム中、すべての関連情報を保持する。
エクゼキューターは、ドライバーから代入された仕事を実際に実行する責任がある。つまり、各エクゼキュータが責任を持つのは、ドライバから代入されたコードを実行することと、そのエクゼキュータ上の計算の状態をドライバノードに報告することの2つだけである。
図2-1は、クラスタマネージャが物理マシンを制御し、Spark Applicationsにリソースを割り当てる方法を示している。このクラスタ・マネージャは3つのコア・クラスタ・マネージャのうちの1つである:Sparkのスタンドアロンクラスターマネージャー、YARN、またはMesosである。つまり、クラスタ上で複数のSpark Applicationを同時に実行することができる。クラスタ・マネージャについてはパートIVで詳しく説明する。
図2-1. Sparkアプリケーションのアーキテクチャ ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access