ダウンロード
Sparkは、プロジェクトサイトのダウンロードページから入手できます。このドキュメントはSparkバージョン4.0.0用です。SparkはHDFSとYARNのためにHadoopのクライアントライブラリを使用します。ダウンロードは、いくつかの一般的なHadoopバージョン用に事前パッケージ化されています。ユーザーは、「Hadoopフリー」バイナリをダウンロードし、Sparkのクラスパスを拡張することによって、任意のHadoopバージョンでSparkを実行することもできます。ScalaおよびJavaユーザーは、Maven座標を使用してSparkをプロジェクトに含めることができ、PythonユーザーはPyPIからSparkをインストールできます。
ソースからSparkをビルドしたい場合は、Sparkのビルドを参照してください。
SparkはWindowsおよびUNIXライクなシステム(Linux、Mac OSなど)の両方で実行でき、サポートされているJavaバージョンが実行されている任意のプラットフォームで実行できるはずです。これには、x86_64およびARM64のJVMが含まれるはずです。ローカルマシンで簡単に実行できます。必要なのは、システムのPATHにjavaがインストールされているか、JAVA_HOME環境変数がJavaのインストールを指していることです。
SparkはJava 17/21、Scala 2.13、Python 3.9+、R 3.5+(非推奨)で実行されます。Scala APIを使用する場合、アプリケーションはSparkがコンパイルされたのと同じScalaバージョンを使用する必要があります。Spark 4.0.0以降、Scalaは2.13です。
サンプルとシェルを実行する
Sparkにはいくつかのサンプルプログラムが付属しています。Python、Scala、Java、Rのサンプルは、examples/src/mainディレクトリにあります。
PythonインタプリタでSparkをインタラクティブに実行するには、bin/pysparkを使用します。
./bin/pyspark --master "local[2]"
サンプルアプリケーションはPythonで提供されています。例:
./bin/spark-submit examples/src/main/python/pi.py 10
ScalaまたはJavaのサンプルプログラムのいずれかを実行するには、トップレベルのSparkディレクトリでbin/run-example <class> [params]を使用します。(内部的には、これはアプリケーションを起動するためのより一般的なspark-submitスクリプトを呼び出します)。例:
./bin/run-example SparkPi 10
Scalaシェルの変更バージョンを通じて、Sparkをインタラクティブに実行することもできます。これはフレームワークを学習するのに適した方法です。
./bin/spark-shell --master "local[2]"
--masterオプションは、分散クラスタのマスターURL、またはローカルで1スレッドで実行するためのlocal、またはNスレッドでローカルで実行するためのlocal[N]を指定します。テストにはlocalから始めるべきです。オプションの完全なリストについては、--helpオプションでSparkシェルを実行してください。
バージョン1.4以降、SparkはR APIを提供しています(DataFrame APIのみが含まれています)。RインタプリタでSparkをインタラクティブに実行するには、bin/sparkRを使用します。
./bin/sparkR --master "local[2]"
Rでもサンプルアプリケーションが提供されています。例:
./bin/spark-submit examples/src/main/r/dataframe.R
Spark ConnectでどこからでもSparkクライアントアプリケーションを実行する
Spark Connectは、Spark 3.4で導入された新しいクライアントサーバーアーキテクチャであり、Sparkクライアントアプリケーションを分離し、Sparkクラスタへのリモート接続を可能にします。クライアントとサーバーの分離により、Sparkとそのオープンエコシステムをどこからでも、あらゆるアプリケーションに組み込んで利用できます。Spark 3.4では、Spark ConnectはPySparkのDataFrame APIカバレッジと、ScalaでのDataFrame/Dataset APIサポートを提供します。
Spark Connectとその使用方法の詳細については、Spark Connectの概要を参照してください。
クラスタ上での起動
Sparkのクラスタモードの概要では、クラスタ上での実行における主要な概念を説明しています。Sparkは、単独で実行することも、いくつかの既存のクラスタマネージャー上で実行することもできます。現在、デプロイメントのオプションがいくつか用意されています。
- Standalone Deploy Mode:プライベートクラスタにSparkをデプロイする最も簡単な方法
- Hadoop YARN
- Kubernetes
次へ進む
プログラミングガイド
- クイックスタート:Spark APIの簡単な紹介。ここから始めてください!
- RDDプログラミングガイド:Sparkの基本(コアだが古いAPIであるRDD)、Accumulator、Broadcast Variableの概要
- Spark SQL、Dataset、DataFrame:リレーショナルクエリを使用した構造化データ処理(RDDよりも新しいAPI)
- Structured Streaming:リレーショナルクエリを使用した構造化データストリームの処理(DatasetとDataFrameを使用、DStreamsよりも新しいAPI)
- Spark Streaming:DStreamsを使用したデータストリームの処理(古いAPI)
- MLlib:機械学習アルゴリズムの適用
- GraphX:グラフの処理
- SparkR (非推奨):RでSparkを使用したデータ処理
- PySpark:PythonでSparkを使用したデータ処理
- Spark SQL CLI:コマンドラインでSQLを使用したデータ処理
APIドキュメント
- Spark Python API (Sphinx)
- Spark Scala API (Scaladoc)
- Spark Java API (Javadoc)
- Spark R API (Roxygen2)
- Spark SQL、組み込み関数 (MkDocs)
デプロイガイド
- クラスタ概要:クラスタ上での実行における概念とコンポーネントの概要
- アプリケーションの提出:アプリケーションのパッケージ化とデプロイ
- デプロイモード
- Standalone Deploy Mode:サードパーティのクラスタマネージャーなしでスタンドアロンクラスタを迅速に起動する
- YARN:Hadoop NextGen (YARN) 上にSparkをデプロイする
- Kubernetes:Kubernetes上に直接Sparkアプリケーションをデプロイする
- Amazon EC2:約5分でEC2上にクラスタを起動できるスクリプト
- Spark Kubernetes Operator:
- SparkApp:オペレーターパターンを介してKubernetes上にSparkアプリケーションをデプロイする
- SparkCluster:オペレーターパターンを介してKubernetes上にSparkクラスタをデプロイする
その他のドキュメント
- 設定:設定システムを介してSparkをカスタマイズする
- 監視:アプリケーションの動作を追跡する
- Web UI:アプリケーションに関する有用な情報を表示する
- チューニングガイド:パフォーマンスとメモリ使用量を最適化するためのベストプラクティス
- ジョブスケジューリング:Sparkアプリケーション間およびアプリケーション内でのリソーススケジューリング
- セキュリティ:Sparkのセキュリティサポート
- ハードウェアプロビジョニング:クラスタハードウェアの推奨事項
- 他のストレージシステムとの統合
- 移行ガイド:Sparkコンポーネントの移行ガイド
- Sparkのビルド:Mavenシステムを使用したSparkのビルド
- Sparkへの貢献
- サードパーティプロジェクト:関連するサードパーティのSparkプロジェクト
外部リソース
- Sparkホームページ
- Sparkコミュニティリソース(ローカルミートアップを含む)
- StackOverflowタグ
apache-spark - メーリングリスト:Sparkに関する質問はこちら
- AMP Camps:UC Berkeleyで開催されたトレーニングキャンプのシリーズで、Spark、Spark Streaming、Mesosなどに関する講演や演習が行われました。ビデオはオンラインで無料公開されています。
- コード例:Sparkの
examplesサブフォルダにもさらに多くの例があります(Python、Scala、Java、R)