ダウンロード
Sparkは、プロジェクトWebサイトのダウンロードページから入手してください。このドキュメントは、Sparkバージョン3.5.1用です。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が含まれます。1台のマシン上でローカルで簡単に実行できます。必要なのは、システムPATH
にjava
がインストールされているか、Javaインストールを指すJAVA_HOME
環境変数があることだけです。
Sparkは、Java 8/11/17、Scala 2.12/2.13、Python 3.8+、およびR 3.5+で実行されます。バージョン8u371より前のJava 8のサポートは、Spark 3.5.0で非推奨になりました。Scala APIを使用する場合、アプリケーションはSparkがコンパイルされたScalaと同じバージョンを使用する必要があります。たとえば、Scala 2.13を使用する場合は、2.13用にコンパイルされたSparkを使用し、Scala 2.13用のコード/アプリケーションもコンパイルします。
Java 11の場合、Apache Arrowライブラリには-Dio.netty.tryReflectionSetAccessible=true
を設定する必要があります。これにより、Apache Arrowが内部でNettyを使用する際のjava.lang.UnsupportedOperationException: sun.misc.Unsafe or java.nio.DirectByteBuffer.(long, int) not available
エラーを防ぎます。
例とシェルを実行する
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は、単独で、またはいくつかの既存のクラスターマネージャーを介して実行できます。現在、デプロイにはいくつかのオプションが提供されています。
- スタンドアロンデプロイモード:プライベートクラスターにSparkをデプロイする最も簡単な方法
- Apache Mesos(非推奨)
- Hadoop YARN
- Kubernetes
ここから進む場所
プログラミングガイド
- クイックスタート:Spark APIの簡単な紹介です。ここから始めてください!
- RDDプログラミングガイド:Sparkの基本-RDD(コアだが古いAPI)、アキュムレータ、ブロードキャスト変数の概要
- Spark SQL、Dataset、およびDataFrame:リレーショナルクエリを使用した構造化データの処理(RDDよりも新しいAPI)
- 構造化ストリーミング:リレーションクエリを使用した構造化データストリームの処理(DatasetとDataFrameを使用、DStreamsよりも新しいAPI)
- Spark Streaming:DStreamsを使用したデータストリームの処理(古いAPI)
- MLlib:機械学習アルゴリズムの適用
- GraphX:グラフの処理
- SparkR:RでのSparkを使用したデータ処理
- PySpark:PythonでのSparkを使用したデータ処理
- Spark SQL CLI:コマンドラインでのSQLを使用したデータ処理
APIドキュメント
- Spark Scala API(Scaladoc)
- Spark Java API(Javadoc)
- Spark Python API(Sphinx)
- Spark R API(Roxygen2)
- Spark SQL、組み込み関数(MkDocs)
デプロイメントガイド
- クラスターの概要:クラスターで実行する際の概念とコンポーネントの概要
- アプリケーションの送信:アプリケーションのパッケージ化とデプロイ
- デプロイメントモード
- Amazon EC2:約5分でEC2でクラスターを起動できるスクリプト
- スタンドアロンデプロイモード:サードパーティのクラスターマネージャーなしでスタンドアロンクラスターをすばやく起動
- Mesos:Apache Mesosを使用してプライベートクラスターをデプロイ
- YARN:Hadoop NextGen(YARN)の上にSparkをデプロイ
- Kubernetes:Kubernetesの上にSparkをデプロイ
その他のドキュメント
- 設定:設定システムを介してSparkをカスタマイズ
- 監視:アプリケーションの動作を追跡
- チューニングガイド:パフォーマンスとメモリ使用を最適化するためのベストプラクティス
- ジョブスケジューリング:Sparkアプリケーション間およびアプリケーション内でのリソースのスケジューリング
- セキュリティ:Sparkのセキュリティサポート
- ハードウェアプロビジョニング:クラスターハードウェアの推奨事項
- 他のストレージシステムとの統合
- 移行ガイド:Sparkコンポーネントの移行ガイド
- Sparkのビルド:Mavenシステムを使用してSparkをビルド
- Sparkへの貢献
- サードパーティプロジェクト:関連するサードパーティのSparkプロジェクト
外部リソース
- Sparkホームページ
- Sparkコミュニティ リソース(ローカルミートアップを含む)
- StackOverflowタグ
apache-spark
- メーリングリスト:Sparkに関する質問はここでお尋ねください
- AMP Camps:UCバークレーで開催された一連のトレーニングキャンプで、Spark、Spark Streaming、Mesosなどに関する講演と演習が行われました。動画はオンラインで無料で利用できます。
- コード例:
examples
Sparkのサブフォルダーにも詳細があります(Scala、Java、Python、R)