Sparkの概要
Apache Sparkは高速で汎用的なクラスタコンピュータシステムです。Java, Scale, PythonおよびRの高レベルのAIPを提供し、一般的な実行グラフをサポートする最適化されたエンジンを提供します。SQLおよび構造データのためのSpark SQL、機械学習のためのMLlib、グラフ処理のためのGraphX およびSpark Streamingを含む高レベルのツールの充実したセットもサポートします。
ダウンロード
プロジェクトのwebサイトの ダウンロードページ からSparkを取得します。このドキュメントはSpark バージョン 2.0.2 のものです。SparkはHDFSおよびYARNのためにHadoopのクライアントライブラリを使用します。ダウンロードは少数の一般的なHadoopバージョンのためにあらかじめパッケージ化されています。ユーザは"Hadoop free"バイナリをダウンロードすることもでき、クラスパスを追加することで任意のHadoopバージョンでSparkを実行することができます。
ソースからSparkを構築したい場合は、Sparkの構築を見てください。
SparkはWindowsおよびUNIX-likeシステム(例えば、Linux, MacOS)のどちらでも実行できます。一つのマシーン上でローカルで実行するのが簡単です - しなければいけないのは java
をシステム PATH
上にインストールする、あるいは JAVA_HOME
環境変数がJavaのインストール場所を示すようにすることです。
Spark は Java 7+, Python 2.6+/3.4+ および R 3.1+ 上で動作します。Scale APIのために、Spark2.0.2はScale 2.11を使用します。互換性のあるScalaバージョン(2.11.x)を使う必要があるでしょう。
例の実行とシェル
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
この後どうすればいいか
プログラミング ガイド:
- クイックスタート: Spark API のクイック紹介; ここから開始します!
- Spark プログラミング ガイド: 全てのサポートされている言語(Scala, Java, Python, R)でのSparkの詳細な概要
- Spark上のモジュールの構築:
- Spark ストリーミング: リアルタイムデータストリームの処理
- Spark SQL、データセット、およびデータフレーム: 構造化データおよびリレーショナル クエリのサポート
- MLlib: 組み込みの機械学習ライブラリ
- GraphX: Sparkのグラフ処理のための新しいAPI
API ドキュメント:
- Spark Scala API (Scaladoc)
- Spark Java API (Javadoc)
- Spark Python API (Sphinx)
- Spark R API (Roxygen2)
開発ガイド
- クラスタの概要: クラスタ上で実行する場合の概念とコンポーネントの概要
- アプリケーションのサブミット: アプリケーションのパッケージ化およびデプロイ
- デプロイメント モード:
- Amazon EC2: 約5分でEC2上にクラスタを起動するスクリプト
- スタンドアローン デプロイ モード: サードパーティのクラスタマネージャー無しにスタンドアローンクラスタを素早く起動する
- Mesos: Apache Mesosを使ったプライベートクラスタのデプロイ
- YARN: Hadoop NextGen (YARN)の上にSparkをデプロイする
他のドキュメント
- 設定: 設定システムを使ってSparkをカスタマイズする
- 監視: アプリケーションの挙動の追跡
- チューニングガイド: パフォーマンスとメモリの利用の最適化のベストプラクティス
- ジョブ スケジューリング: Sparkアプリケーション間および内部でリソースをスケジュールする
- セキュリティ: Sparkのセキュリティサポート
- ハードウェアの準備: クラスタハードウェアのお勧め
- 他のストレージシステムとの統合:
- Sparkの構築: Mavenシステムを使ったSparkの構築
- Sparkへの貢献
- サードパーティ プロジェクト: サードパーティに関するSparkプロジェクト
外部リソース:
- Spark ホームページ
- Spark Wiki
- Spark Community resources, including local meetups
- StackOverflow tag
apache-spark
- メーリングリスト: Sparkに関する質問はここで聞きます
- AMP Camps: Spark, Spark ストリーミング, Mesos などについての特集タスクと練習のUCバークレイでの一連のトレーニングキャンプ。Videos, slides および exercises がオンラインで無料で利用可能です。
- コードの例: Sparkの
examples
サブフォルダの中でももっと多くが利用可能です (Scala, Java, Python, R)