Spark Release 1.2.0

Spark 1.2.0 は 1.X ラインの 3 回目のリリースです。このリリースでは、Spark のコアエンジンのパフォーマンスとユーザビリティの向上、MLlib のための主要な新 API、Python での ML サポートの拡張、Spark Streaming での完全な H/A モード、その他多くの機能が追加されています。GraphX では、パフォーマンスと API の大幅な改善が見られ、アルファコンポーネントから正式リリースとなりました。Spark 1.2 は、60 を超える機関の 172 人の貢献者による 1000 以上の個別のパッチによる作業を表しています。

Spark 1.2 をダウンロードするには、ダウンロードページをご覧ください。

Spark Core

1.2 では、Spark core は、非常に大規模なシャッフルのパフォーマンスと安定性を向上させるために 2 つの主要なサブシステムをアップグレードしました。1 つ目は、バルク転送中に使用される Spark の通信マネージャーで、Netty ベースの実装にアップグレードされています。2 つ目は、Spark のシャッフルメカニズムで、Spark 1.1 で最初にリリースされた「ソートベース」シャッフルにアップグレードされています。これらはどちらも、非常に大規模なシャッフルのパフォーマンスと安定性を向上させます。Spark はまた、長時間実行される ETL スタイルのジョブでのクラスター利用率を向上させるように設計された弾力的なスケーリングメカニズムを追加しました。これは現在 YARN でサポートされており、将来のバージョンでは他のクラスターマネージャーにも対応する予定です。最後に、Spark 1.2 は Scala 2.11 をサポートしました。Scala 2.11 でのビルド手順については、ビルドドキュメントを参照してください。

Spark Streaming

このリリースには、Spark のストリーミングライブラリへの 2 つの主要な機能追加が含まれています。Python API と、ドライバの完全な H/A を実現するライトアヘッドログです。Python API は、ほぼすべての DStream の変換と出力操作をカバーしています。現在、テキストファイルとソケット経由のテキストに基づく入力ソースがサポートされています。Python での Kafka および Flume 入力ストリームのサポートは、次のリリースで追加される予定です。次に、Spark Streaming は、ライトアヘッドログ (WAL) を通じて、H/A ドライバサポートを特徴とするようになりました。Spark 1.1 以前では、一部のバッファリングされたデータ(受信済みだが未処理)は、ドライバリスタート中に失われる可能性がありました。これを防ぐため、Spark 1.2 はオプションの WAL を追加しました。これは、受信したデータを耐障害性のあるファイルシステム(例: HDFS)にバッファリングします。詳細については、ストリーミングプログラミングガイドを参照してください。

MLLib

Spark 1.2 では、spark.ml というパッケージに新しい機械学習 API がプレビューとして公開されました。これは、複数のアルゴリズムが異なるパラメーターでシーケンシャルに実行される学習パイプラインをサポートします。この種のパイプラインは、実際の機械学習デプロイメントでは一般的です。新しい ML パッケージは Spark の SchemaRDD を使用してML データセットを表現し、Spark SQL との直接的な相互運用性を提供します。新しい API に加えて、Spark 1.2 は決定木を 2 つのツリーアンサンブルメソッドで拡張します。分類と回帰で最も成功しているツリーベースモデルの 1 つであるランダムフォレスト勾配ブースティングツリーです。最後に、MLlib の Python 実装は、Python API の追加プロセスを簡素化し、Python API カバレッジを向上させるために 1.2 で大幅に更新されました。

Spark SQL

このリリースでは、Spark SQL は外部データソース用の新しい API を追加しました。この API は、述語プッシュダウンなどの最適化をサポートし、外部データソースを一時テーブルとしてマウントすることをサポートします。Spark のParquet および JSON バインディングは、この API を使用するように再実装されており、1.2 ライフサイクル中にさまざまなコミュニティプロジェクトが他のシステムやフォーマットと統合されることが期待されます。

Hive 統合は、固定精度 10 進数型Hive 0.13 のサポートにより改善されました。Spark SQL は、人気のある Hive 機能である動的にパーティション分割された挿入も追加しました。キャッシングに関する内部的な再構築により、SchemaRDD のキャッシングインスタンスのパフォーマンスとセマンティクスが向上し、キャッシュされたデータに対する統計ベースのパーティションプルーニングのサポートが追加されました。

GraphX

1.2 では、GraphX はアルファコンポーネントから正式リリースとなり、安定した API が追加されました。これは、GraphX に対して記述されたアプリケーションは、コードの変更なしに将来の Spark バージョンでも動作することが保証されることを意味します。新しいコア API である aggregateMessages が、廃止された mapReduceTriplet API に代わって導入されました。新しい aggregateMessages API は、より命令的なプログラミングモデルを特徴とし、パフォーマンスを向上させます。初期のテストユーザーは、新しい API に切り替えることで 20% ~ 1X のパフォーマンス向上を確認しています。

さらに、Spark はグラフのチェックポイントラインエイジの切り詰めをサポートするようになりました。これらは、本番ジョブでの多数のイテレーションをサポートするために必要です。最後に、PageRank およびグラフのロードのパフォーマンスがいくつか改善されました。

その他の注意事項

Spark 1.2 へのアップグレード

Spark 1.2 は Spark 1.0 および 1.1 とバイナリ互換性があるため、コードの変更は必要ありません。ただし、明示的に不安定とマークされた API は除きます。Spark は、パフォーマンス向上のために、いくつかのケースでデフォルト設定を変更しています。Spark 1.1 とまったく同じ設定を維持したいユーザーは、これらの変更を元に戻すことができます。

  1. spark.shuffle.blockTransferServicenio から netty に変更されました。
  2. spark.shuffle.managerhash から sort に変更されました。
  3. PySpark では、デフォルトのバッチサイズが 0 に変更されました。これは、バッチサイズがオブジェクトのサイズに基づいて選択されることを意味します。1.2 より前の動作を復元するには、SparkContext([... args... ], batchSize=1024) を使用できます。
  4. Spark SQL は以下のデフォルトを変更しました。
    • spark.sql.parquet.cacheMetadata: false -> true
    • spark.sql.parquet.compression.codec: snappy -> gzip
    • spark.sql.hive.convertMetastoreParquet: false -> true
    • spark.sql.inMemoryColumnarStorage.compressed: false -> true
    • spark.sql.inMemoryColumnarStorage.batchSize: 1000 -> 10000
    • spark.sql.autoBroadcastJoinThreshold: 10000 -> 10485760 (10 MB)

既知の問題

いくつかの小さなバグはリリースウィンドウに間に合いませんでした。これらは Spark 1.2.1 で修正される予定です。

  • Netty シャッフルはセキュアポート構成を尊重しません。回避策 - nio シャッフルに戻す: SPARK-4837
  • EXTERNAL Hive テーブル作成時の java.io.FileNotFound 例外。回避策 - hive.stats.autogather = false に設定する。SPARK-4892
  • テキストファイル入力での PySpark zip 関数の例外: SPARK-4841
  • MetricsServlet が正しく初期化されていません: SPARK-4595

クレジット

  • Aaron Davidson – Core の改善; Core および Shuffle のバグ修正; Core および Shuffle の改善
  • Aaron Staple – Core、MLlib、および Streaming の改善; PySpark の新機能; SQL のバグ修正
  • Adam Pingel – Core の改善
  • Ahir Reddy – Core の改善
  • Akshat Aranya – Core のバグ修正
  • Alex Liu – SQL のバグ修正
  • Alexander Ulanov – MLlib の新機能
  • Allan Douglas R. De Oliveira – Core の改善
  • Anand Avati – Core の改善
  • Anant Asthana – Core、MLlib、および SQL の改善
  • Andrew Ash – Core のドキュメントおよびバグ修正
  • Andrew Bullen – MLlib のバグ修正
  • Andrew Or – Core および YARN の改善; Windows、Core、および YARN のバグ修正; Core および YARN の改善
  • Andy Konwinski – Core のドキュメント
  • Aniket Bhatnagar – Core および Streaming のバグ修正
  • Ankur Dave – GraphX の改善およびバグ修正
  • Arun Ahuja – Core のドキュメント
  • Benoy Antony – Web UI および YARN のバグ修正
  • Bertrand Bossy – Core のバグ修正
  • Bill Bejeck – Core のバグ修正
  • Brenden Matthews – Mesos のバグ修正
  • Burak Yavuz – MLlib の新機能
  • Chao Chen – Core の改善およびドキュメント
  • Cheng Hao – SQL のテスト、改善、新機能、バグ修正、および改善
  • Cheng Lian – Core および SQL の改善; SQL のテスト; SQL の新機能; Core および SQL のバグ修正; Core のドキュメント
  • Chester Chen – YARN のバグ修正
  • Chip Senkbeil – Core の新機能
  • Chirag Aggarwal – SQL のバグ修正
  • Chris Cope – YARN のバグ修正
  • Christoph Sawade – MLlib および PySpark の改善
  • Cody Koeninger – SQL の改善
  • Colin Patrick Mccabe – Core の改善
  • DB Tsai – MLlib の改善および改善
  • Dale Richardson – Core の改善
  • Dan McClary – SQL の新機能
  • Dan Osipov – EC2 の新機能
  • Daoyuan Wang – Core および SQL の改善; SQL の新機能; Core および SQL のバグ修正; Core のドキュメント
  • Davies Liu – Core、SQL、MLlib、および PySpark の改善; Core、Streaming、PySpark、MLlib、および PySpark の新機能; Streaming、Core、SQL、MLlib、および PySpark のバグ修正; Core のドキュメント
  • Derek Ma – Core および Streaming のバグ修正
  • DoingDone9 – SQL のバグ修正
  • Egor Pahomov – Core のバグ修正
  • Eric Eijkelenboom – Core のバグ修正
  • Eric Liang – Core および SQL のバグ修正
  • Erik Erlandson – Core の改善および改善
  • Eugen Cepoi – Core の改善
  • Fairiz Azizi – Core の改善
  • Felix Maximilian Moller – Core のドキュメント
  • Gankun Luo – SQL のバグ修正
  • Grega Kespret – Core のドキュメント
  • GuoQiang Li – Core および MLlib の改善; Core、Web UI、MLlib、および PySpark のバグ修正; YARN の改善
  • Hari Shreedharan – Streaming のバグ修正および改善
  • Henry Cook – Core のドキュメント
  • Holden Karau – Core のドキュメント; PySpark のバグ修正
  • Hong Shen – Core の改善
  • Hossein Falaki – Web UI のバグ修正
  • Ian Hummel – Core の改善
  • Jacky Li – Core のバグ修正
  • Jakub Dubovsky – Core のバグ修正
  • Jascha Swisher – Core のバグ修正
  • Jay Vyas – Core のドキュメント
  • Jeremy Freeman – Streaming および MLlib の新機能; Core および PySpark のバグ修正
  • Jey Kottalam – Core のバグ修正
  • Jie Huang – Core のドキュメントおよびバグ修正
  • Jim Carroll – SQL の改善およびバグ修正
  • Jim Lim – Core の改善; YARN のバグ修正
  • Jongyoul Lee – Core および Mesos のバグ修正
  • Joseph Bradley – MLlib の改善
  • Joseph E. Gonzalez – Core のドキュメント; GraphX および MLlib のバグ修正
  • Joseph K. Bradley – Core および MLlib の改善; MLlib および SQL の新機能; MLlib のバグ修正; Core および MLlib のドキュメント
  • Josh Rosen – Java API、Core、Web UI、および Shuffle の改善; Java API、Core、および Web UI の新機能; Core、PySpark、および Streaming のバグ修正; Core のドキュメント
  • Kai Sasaki – Core のバグ修正
  • Kay Ousterhout – Core および Web UI の改善; Core および Web UI のバグ修正
  • Ken Takagiwa – Core のドキュメント
  • Kenichi Maehashi – Core の改善
  • Kevin Mader – Java API および Core の改善
  • Kousuke Saruta – Project Infra、Core、PySpark、YARN、SQL、および Web UI の改善; Core、PySpark、MLlib、YARN、SQL、および Web UI のバグ修正; Core のドキュメント
  • Larry Xiao – GraphX の改善およびバグ修正
  • Li Zhihui – Core の改善
  • Liang-Chi Hsieh – Core の改善; Core および SQL のバグ修正
  • Lianhui Wang – GraphX のバグ修正
  • Lijie Xu – Core および GraphX のバグ修正
  • Liquan Pei – Core のドキュメント; MLlib および PySpark の新機能
  • Liu Hao – Core のバグ修正
  • Lu Lu – GraphX の改善
  • Madhu Siddalingaiah – Core におけるドキュメント
  • Manish Amde – MLlib の改善および新機能
  • Marcelo Vanzin – YARN のテスト; Core および YARN の改善; Core の新機能; Core および YARN のバグ修正; Core の改善
  • Mario Pastorelli – Core のドキュメント
  • Mark G. Whitney – YARN のドキュメント
  • Mark Hamstra – Core のバグ修正
  • Mark Mims – Web UI の改善
  • Martin Weindel – Core および Mesos のドキュメント
  • Masayoshi TSUZUKI – Windows、Core、および PySpark の改善; Windows、Core、および PySpark のバグ修正
  • Matei Zaharia – Core および SQL の改善; Core および SQL のバグ修正
  • Matthew Cheah – Core のバグ修正
  • Matthew Farrellee – Core の改善; PySpark の新機能; Core および PySpark のバグ修正
  • Matthew Rocklin – Core のバグ修正
  • Matthew Taylor – SQL のバグ修正
  • Michael Armbrust – SQL の改善; SQL の新機能; Core、PySpark、および SQL のバグ修正; Core のドキュメント
  • Michael Griffiths – PySpark のバグ修正
  • Michelangelo D’Agostino – MLlib および PySpark の改善
  • Mike Timper – SQL のバグ修正
  • Min Shen – YARN のバグ修正
  • Mingfei Shi – Core のバグ修正
  • Mubarak Seyed – Streaming の改善
  • NamelessAnalyst – GraphX の改善
  • Nan Zhu – Core の改善およびバグ修正
  • Nathan Artz – Core のドキュメント
  • Nathan Howell – SQL のバグ修正
  • Nicholas Chammas – Core の改善; Project Infra、Core、および EC2 の改善; Project Infra、EC2、および SQL のバグ修正; Core のドキュメント
  • Niklas Wilcke – MLlib の改善; Core のバグ修正
  • Nishkam Ravi – Core のバグ修正
  • Oded Zimerman – GraphX のバグ修正
  • Patrick Wendell – Core の改善; Project Infra、Core、および Mesos のバグ修正
  • Prashant Sharma – Core の改善; Streaming および Core のバグ修正; Core、YARN、および Streaming の改善
  • Praveen Seluka - Core の新機能
  • Qiping Li – MLlib の改善および新機能
  • RJ Nowling – MLlib の改善; GraphX のバグ修正; Core のドキュメント
  • Ravindra Pesala – SQL の改善、新機能、およびバグ修正
  • Raymond Liu – Core および Shuffle の改善
  • Renat Yusupov – SQL のバグ修正
  • Reno Zhang – YARN の改善
  • Reynold Xin – Core、Shuffle、EC2、および SQL の改善; Project Infra、Core、および EC2 の新機能; Core および SQL のバグ修正; Core、Shuffle、および SQL の改善
  • Reza Zadeh – Core の改善; MLlib の新機能; Core のドキュメント
  • Rob O’Dwyer – PySpark の改善
  • Rong Gu – Core の改善
  • Rui Li – Java API の新機能
  • Saisai Shao – Streaming の改善; Streaming および Shuffle のバグ修正
  • Sandy Ryza – Core、MLlib、および YARN の改善; Core の新機能; Core および SQL のバグ修正
  • Santiago M. Mola – Core のドキュメント
  • Sean Owen – Streaming の改善; Core および Streaming の改善; Core の新機能; Java API、Core、MLlib、および Streaming のバグ修正; Core のドキュメント
  • Shane Knapp – Core のバグ修正
  • Shiti Saxena – Core の改善
  • Shivaram Venkataraman – Core の改善; Core および EC2 のバグ修正
  • Shixiong Zhu – Core のテスト; Core および Web UI の改善; Core、Web UI、および YARN のバグ修正; Streaming および Core のドキュメント
  • Bai Shou – SQL の改善およびバグ修正
  • Shuo Xiang – MLlib の新機能およびバグ修正
  • Su Yan – Core のバグ修正
  • Sung Chung – MLlib の改善
  • Surong Quan – Streaming の改善
  • Takuya UESHIN – SQL のテスト; Core のドキュメント; Core および SQL のバグ修正; SQL の改善
  • Tal Sliwowicz – Core のバグ修正
  • Tathagata Das – Core および Streaming の改善; Streaming および Core のバグ修正; Streaming の改善
  • Ted Yu – Core のバグ修正および改善
  • Thomas Graves – Core および YARN のバグ修正
  • Tianshuo Deng – Core および Shuffle のバグ修正
  • Timothy Chen – Mesos のバグ修正
  • Tingjun Xu – YARN のバグ修正
  • Tomohiko K. – Core および PySpark のバグ修正; PySpark の改善
  • Uncle Gen – GraphX の改善
  • Uri Laserson – PySpark の改善
  • Varadharajan Mukundan – Core の改善
  • Venkata Ramana Gollamudi – SQL の新機能およびバグ修正
  • Victor Tso – Core のバグ修正
  • Vida Ha – SQL の改善; EC2 のバグ修正
  • Viper Kun – Core のドキュメント
  • Wang Fei – SQL のテスト; Core および SQL の改善; Core および SQL のバグ修正; Core のドキュメント
  • Wang Tao – Core、YARN、および SQL の改善; Core および YARN のバグ修正
  • Ward Viaene – PySpark のバグ修正
  • Wenchen Fan – SQL のバグ修正
  • William Benton – SQL の改善およびバグ修正
  • Xiangrui Meng – Core、PySpark、MLlib、SQL、Java API、および Web UI の改善; Core のドキュメント; SQL、MLlib、および PySpark の新機能; Core、MLlib、および PySpark のバグ修正; PySpark、MLlib、および SQL の改善
  • Xinyun Huang – SQL の改善
  • Yadong Qi – Core のテスト; Streaming の改善およびバグ修正
  • Yanbo Liang – MLlib の新機能
  • Yantang Zhai – Core の改善; Core、Web UI、および SQL のバグ修正
  • Yash Datta – SQL の改善
  • Ye Xianjin – Core の改善
  • Yin Huai – Core のドキュメント; SQL のバグ修正
  • Zdenek Farana – SQL のバグ修正
  • Zhan Zhang – SQL のビルド修正
  • Zhang, Liye – Core の改善およびバグ修正

貢献してくださった皆様、ありがとうございました!


Spark ニュースアーカイブ