Spark リリース 0.6.0
Spark 0.6.0 は、いくつかの新機能、アーキテクチャの変更、およびパフォーマンスの向上をもたらすメジャーリリースです。最も目に見える追加機能は、スタンドアロンデプロイモード、Java API、および拡張されたドキュメントですが、内部には多数の変更があり、場合によってはパフォーマンスが最大 2 倍向上しています。
このリリースは、ソースパッケージ (2 MB tar.gz) または 事前ビルドパッケージ (48 MB tar.gz) としてダウンロードできます。
より簡単なデプロイ
Mesos 上で実行することに加えて、Spark には スタンドアロンデプロイモード が追加され、外部クラスターマネージャーをインストールせずにクラスターをすばやく起動できるようになりました。スタンドアロンモードでは、各マシンに Java がインストールされていて、Spark がデプロイされていれば動作します。
さらに、YARN (Hadoop NextGen) 上で実行するための実験的なサポート があり、現在は別のブランチにあります。
Java API
Java プログラマーは、新しい Java API レイヤー を通じて Spark を使用できるようになりました。このレイヤーは、並列変換、分散データセット、ブロードキャスト変数、アキュムレータなど、Spark のすべての機能を Java フレンドリーな方法で利用できるようにします。
拡張されたドキュメント
Spark の ドキュメント は、新しい クイックスタートガイド、追加のデプロイ手順、設定ガイド、チューニングガイド、および改善された Scaladoc API ドキュメントで拡張されました。
エンジン変更
内部では、Spark 0.6 は、今後の Spark Streaming プロジェクトから取り込まれた新しいカスタムストレージおよび通信レイヤーを備えています。これらは、過去のバージョンと比較して最大 2 倍のパフォーマンス向上が期待できます。具体的には
- 非同期 Java NIO を使用する新しい通信マネージャーにより、特に大量のデータを送信する場合や、ジョブに多数のタスクがある場合に、シャッフル操作が高速化されます。
- 新しいストレージマネージャーは、データセットごとのストレージレベル設定 (例: データセットをメモリに保持するか、デシリアライズするか、ディスクに保持するか、ノード間でレプリケートするかなど) をサポートします。
- Spark のスケジューラーと制御プレーンは、超低遅延ジョブ (500ms 未満) と高スループットのスケジューリング決定をよりよくサポートするように最適化されました。
新しい API
- このリリースでは、RDD ごとにキャッシング戦略を制御する機能が追加され、異なる RDD をメモリ、ディスク、シリアライズされたバイトなどで保存できるようになりました。RDD の persist() メソッド を使用してストレージレベルを選択できます。
- 新しい Accumulable クラスは、累積される型が追加される要素の型と同じでない場合 (例: 個々の要素を追加することによってコレクション、たとえば Set を累積したい場合) のアキュムレータを一般化します。
- ワーカーに送信されるファイルまたは JAR を動的に追加できるようになりました。SparkContext.addFile/Jar.
- より多くの Spark オペレーター (例: join) がカスタムパーティショナーをサポートするようになりました。
デバッグの強化
Spark のログには、ログに記載されている各 RDD およびジョブがプログラムのどの操作に属しているかが表示されるようになり、コードのどの部分で問題が発生しているかを特定しやすくなりました。
Maven アーティファクト
Spark が Maven Central で利用可能になったため、JAR としてビルドせずにプログラムにリンクしやすくなりました。プロジェクトに追加するには、次の Maven 識別子を使用してください。
- groupId: org.spark-project
- artifactId: spark-core_2.9.2
- version: 0.6.0
互換性
このリリースは Spark 0.5 プログラムとソース互換性がありますが、0.6 に対して再コンパイルする必要があります。さらに、キャッシングの設定が変更されました。すべての RDD に 1 つのキャッシング戦略を設定するspark.cache.classパラメータの代わりに、RDD ごとのストレージレベル を設定できるようになりました。Spark は、設定しようとすると警告を発します。spark.cache.class.
クレジット
Spark 0.6 は、バークレーおよび外部からの多数の新しい貢献者による作業でした。
- Tathagata Das は、新しい通信レイヤーとストレージレイヤーの一部に貢献しました。
- Haoyuan Li は、新しいストレージマネージャーに貢献しました。
- Denny Britz は、YARN デプロイモード、スタンドアロンモードの主要な側面、およびその他のいくつかの機能に貢献しました。
- Andy Konwinski は、改訂されたドキュメントサイト、Maven パブリッシング、およびいくつかの API ドキュメントに貢献しました。
- Josh Rosen は、Java API といくつかのバグ修正に貢献しました。
- Patrick Wendell は、デバッグ機能の強化に貢献し、テストとドキュメントにも協力しました。
- Reynold Xin は、多数のバグ修正とパフォーマンス修正に貢献しました。
- Imran Rashid は、新しい Accumulable クラスに貢献しました。
- Harvey Feng は、シャッフル操作の改善に貢献しました。
- Shivaram Venkataraman は、Spark のメモリ推定を改善し、メモリチューニングガイドを作成しました。
- Ravi Pandya は、Windows 用の Spark 実行スクリプトに貢献しました。
- Mosharaf Chowdhury は、ブロードキャストに関するいくつかの修正を提供しました。
- Henry Milner は、サンプリングアルゴリズムにおけるいくつかのバグを指摘しました。
- Ray Racine は、EC2 スクリプトの改善を提供しました。
- Paul Ruan と Bill Zhao は、テストに協力しました。
また、機能の提案やバグの報告を熱心に行ってくれたすべての Spark ユーザーにも感謝します。
Spark ニュースアーカイブ