Sparkの概要
Apache Sparkは高速で汎用的なクラスタコンピュータシステムです。Java, Scale, PythonおよびRの高レベルのAIPを提供し、一般的な実行グラフをサポートする最適化されたエンジンを提供します。SQLおよび構造データのためのSpark SQL、機械学習のためのMLlib、グラフ処理のためのGraphX およびSpark Streamingを含む高レベルのツールの充実したセットもサポートします。
ダウンロード
プロジェクトのwebサイトの ダウンロードページ からSparkを取得します。このドキュメントはSpark バージョン2.4.0のものです。SparkはHDFSおよびYARNのためにHadoopのクライアントライブラリを使用します。ダウンロードは少数の一般的なHadoopバージョンのためにあらかじめパッケージ化されています。ユーザは"Hadoop free"バイナリをダウンロードすることもでき、クラスパスを追加することで任意のHadoopバージョンでSparkを実行することができます。ScalaとJavaのユーザは Maven cooridnates を使ってプロジェクトにSparkを含めることができます。将来にはPythonユーザもPyPIからSparkをインストールすることができます。
ソースからSparkを構築したい場合は、Sparkの構築を見てください。
SparkはWindowsおよびUNIX-likeシステム(例えば、Linux, MacOS)のどちらでも実行できます。一つのマシーン上でローカルで実行するのが簡単です - しなければいけないのは java
をシステム PATH
上にインストールする、あるいは JAVA_HOME
環境変数がJavaのインストール場所を示すようにすることです。
Spark は Java 8+, Python 2.7+/3.4+ および R 3.1+ 上で動作します。Scale APIのために、Spark2.4.0は Scale 2.11を使用します。互換性のあるScalaバージョン(2.11.x)を使う必要があるでしょう。
Spark 2.2.0 の時点で、Java 7、Python 2.6 および 2.6.5より前の古いHadoopのバージョンのサポートは削除されました。2.3.0の時点でScala 2.10のためのサポートは削除されました。
例の実行とシェル
Spark は幾つかの例のプログラムが付いています。Scala, Java, Python および R の例が examples/src/main
ディレクトリの中にあります。Java あるいは Scala サンプルプログラムの一つを実行するために、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シェルを実行します。
SparkはPython APIも提供します。Pythonインタプリタの中で対話的にSparkを実行するには、bin/pyspark
を使います:
./bin/pyspark --master local[2]
例のアプリケーションもPythonの中で提供されます。例えば:
./bin/spark-submit examples/src/main/python/pi.py 10
Sparkは 1.4から実験的なR APIも提供しています(データフレームAPIだけが含まれています)。SparkをRインタプリタの中で対話的に実行するには、bin/sparkR
を使用します:
./bin/sparkR --master local[2]
例のアプリケーションもRでも提供されています。例えば、
./bin/spark-submit examples/src/main/r/dataframe.R
クラスタ上で起動する
Sparkの クラスターモードの概要 はクラスタ上で実行する場合の重要な概念を説明します。Sparkは単体でも、あるいは幾つかの既存のクラスタマネージャー上でも実行することができます。現在のところ、開発のための幾つかのオプションが提供されています:
- スタンドアローン デプロイ モード: Sparkをプライベートクラスタ上にデプロイするもっとも簡単な方法
- Apache Mesos
- Hadoop YARN
- Kubernetes
この後どうすればいいか
プログラミング ガイド:
- クイックスタート: Spark API のクイック紹介; ここから開始します!
- RDD Programming Guide: Sparkの基本の概要 - RDDs (中核だが古いAPI), アキュムレータ、およびブロードキャスト変数
- Spark SQL, データセット および データフレーム: 関係クエリを持つ構造化データの処理 (RDDよりも新しいAPI)
- 構造化ストリーミング: 関係クエリを持つ構造化データストリームの処理 (データセットとデータフレームを使った、DStreamより新しいAPI)
- Sparkストリーミング: DStreamを使ったデータストリームの処理 (古いAPI)
- MLlib: 機械学習アルゴリズムの適用
- GraphX: グラフの処理
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の構築: Mavenシステムを使ったSparkの構築
- Sparkへの貢献
- サードパーティ プロジェクト: サードパーティに関するSparkプロジェクト
外部リソース:
- Spark ホームページ
- Spark Community ローカル ミートアップを含むリソース
- StackOverflow tag
apache-spark
- メーリングリスト: Sparkに関する質問はここで聞きます
- AMP Camps: Spark, Spark ストリーミング, Mesos などについての特集タスクと練習のUCバークレイでの一連のトレーニングキャンプ。Videos, slides および exercises がオンラインで無料で利用可能です。
- コードの例: Sparkの
examples
サブフォルダの中でももっと多くが利用可能です (Scala, Java, Python, R)