Spark リリース 1.1.0

Spark 1.1.0 は、1.X ラインの最初のマイナーリリースです。このリリースでは、Spark Core における運用およびパフォーマンスの改善に加え、Spark の最新ライブラリである MLlib および Spark SQL の大幅な拡張が導入されました。また、Spark の Python サポートも拡張され、Spark Streaming モジュールに新しいコンポーネントが追加されました。Spark 1.1 は、171 名のコントリビューターの貢献によるもので、Spark リリースにおける過去最高の貢献者数となります!

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

パフォーマンスとユーザビリティの向上

全体的に、Spark 1.1 は、特に大規模ワークロードにおいて、安定性とパフォーマンスを向上させる機能を追加しました。Spark は、キャッシュ操作中にスキューしたブロックのディスクスピルを実行するようになり、単一の RDD パーティションが大きい場合にメモリオーバーフローを防ぐようになりました。Spark 1.0 で導入された集計中のディスクスピルは、PySpark に移植されました。このリリースでは、非常に大規模なシャッフルに最適化された新しいシャッフル実装が導入されています。この「ソートベースシャッフル」は、次期リリースでデフォルトになりますが、現在ユーザーが利用可能です。多数のレデューサーを持つジョブでは、これを有効にすることを推奨します。このリリースでは、長時間実行される複雑なジョブのパフォーマンスを監視するためのいくつかのユーザビリティ改善も追加されています。変更点には、Spark UI に表示されるより良い名前付きアキュムレータ、タスクの進捗状況の動的なメトリック更新、および入力データを読み取るタスクの入力メトリックのレポートなどがあります。

Spark SQL

Spark SQL は、このリリースで多くの新機能とパフォーマンス改善を追加しました。JDBC/ODBC サーバーにより、ユーザーはさまざまなアプリケーションから SparkSQL に接続でき、キャッシュされたテーブルへの共有アクセスを提供します。新しいモジュールは、JSON データを Spark の SchemaRDD フォーマットに直接ロードするためのサポートを提供し、スキーマ推論も自動で行われます。Spark SQL は、このリリースで動的なバイトコード生成を導入しました。これは、複雑な式評価を実行するクエリの実行を大幅に高速化する技術です。このリリースでは、Python、Scala、Java のラムダ関数を UDF として登録するサポートも追加され、SQL で直接呼び出すことができます。Spark 1.1 では、カスタムデータソースから SchemaRDD を作成できるパブリック型 API が追加されました。最後に、ネイティブ Parquet サポートおよびエンジン全体に多くの最適化が追加されています。

MLlib

MLlib は、このリリースでいくつかの新しいアルゴリズムと最適化を追加しました。1.1 では、探索的分析関数を提供する新しい統計パッケージライブラリが導入されました。これらには、層化サンプリング、相関、カイ二乗検定、およびランダムデータセット作成のサポートが含まれます。このリリースでは、特徴抽出(Word2Vec および TF-IDF)および特徴変換(正規化と標準スケーリング)のためのユーティリティが追加されました。また、非負行列分解およびSVD(Lanczos 経由)のサポートも新しく追加されました。決定木アルゴリズムは、Python と Java に追加されました。多くの既存アルゴリズムの最適化を支援するために、ツリー集約プリミティブが追加されました。MLlib 1.1 では、全体的にパフォーマンスが向上しており、多くのアルゴリズムで 2〜3 倍、大規模な決定木問題では最大 5 倍の改善が見られます。

GraphX および Spark Streaming

Spark Streaming は、新しいデータソースであるAmazon Kinesis を追加しました。Apache Flume については、データを Flume からプルする新しいモードがサポートされ、デプロイが簡素化され、高可用性が提供されます。一連のストリーミング機械学習アルゴリズムの最初のものとして、ストリーミング線形回帰が導入されました。最後に、ストリーミング入力用のレート制限が追加されました。GraphX は、頂点とエッジのカスタムストレージレベルと、全体的な数値精度の向上を追加しました。最後に、GraphX は新しいラベル伝播アルゴリズムを追加しました。

その他の注目すべき改善点

  • PySpark は、SequenceFiles、HBase、Cassandra、Avro、その他のデータソースを含む、任意の Hadoop InputFormat の読み込みおよび書き込みを可能にしました。
  • ステージの再提出は、Spark UI で適切に処理されるようになりました。
  • Spark は、すべてのネットワークポートに対して厳格なファイアウォールルールをサポートしています。
  • GraphX で 40 億を超える頂点を持つグラフに影響するオーバーフローバグが修正されました。

アップグレードノート

Spark 1.1.0 は Spark 1.0.X と後方互換性があります。一部の構成オプションのデフォルト値が変更されたため、既存のユーザーにとって関連性がある場合があります。

  • メモリ使用量を改善するため、spark.io.compression.codec のデフォルト値は snappy になりました。古い動作は、lzf に切り替えることで復元できます。
  • ブロードキャストの効率を改善するため、spark.broadcast.factory のデフォルト値は org.apache.spark.broadcast.TorrentBroadcastFactory になりました。古い動作は、org.apache.spark.broadcast.HttpBroadcastFactory に切り替えることで復元できます。
  • PySpark は、集計中に外部スピルを実行するようになりました。古い動作は、spark.shuffle.spillfalse に設定することで復元できます。
  • PySpark は、シャッフル操作の並列度を決定するために新しいヒューリスティックを使用します。古い動作は、spark.default.parallelism をクラスターのコア数に設定することで復元できます。

解決された問題の全リスト

貢献者

  • Aaron Davidson – PySpark の最適化、Spark Core の修正と最適化
  • Aaron Staple – Spark Core、Spark SQL の修正
  • Ahir Reddy – Spark SQL の修正
  • Albert Chu – 設定の修正
  • Alexander Ulanov – MLlib の多クラス評価メトリック
  • Alex Liu – バグ修正
  • Ali Ghodsi – ドキュメント修正
  • Allan Douglas R. de Oliveira – EC2 スクリプトの拡張と coGroup の修正
  • Ameet Talwalkar – MLlib ドキュメント
  • Anand Avati – ビルドおよび SQL の修正
  • Anant – Python およびドキュメントの修正
  • Anatoli Fomenko – MLlib ドキュメント修正
  • Andrew Ash – ドキュメントの改善とバグ修正
  • Andrew Xia – 外部ソート機能
  • Andrew Or – 外部スピル機能、バグ修正、および最適化
  • Andrew Schumacher – Spark SQL の Parquet サポート
  • Ankit Bhardwaj – バグ修正
  • Ankur Dave – GraphX の最適化と改善
  • Ariel Rabkin – ドキュメント修正
  • Arkadiusz Komarzewski – ドキュメント修正
  • Artjom Metrio – 例の修正
  • Baishuo – Spark SQL のバグ修正
  • Basit Mustafa – EC2 スクリプト修正
  • Bernardo Gomez Palacio – ビルド修正および YARN 修正
  • Brock Noland – ビルド改善
  • Bruno Paulin – Java での emptyRDD
  • Burak – ドキュメントとコードの修正
  • Carl Max – コードのクリーンアップ
  • Cesar Arevalo – タイプミス修正
  • Chandan Kumar – バグ修正およびドキュメント修正
  • Chen Chao – 例とコードのクリーンアップ
  • Cheng Hao – Spark SQL の最適化と修正
  • Cheng Lian – Spark SQL での JDBC サーバー(リード)、Spark SQL のいくつかの最適化と修正
  • Chia-Yung Su – Spark SQL のバグ修正
  • Chris Cope – コードのクリーンアップ
  • Chris Fregly – Spark Streaming の AWS Kinesis サポート
  • Christian Tzolov – ビルドでの Pivotal サポート
  • Clement Mathieu – ドキュメント修正
  • Colin McCabe – ビルド修正
  • Daehan Kim – 例の修正
  • Daniel Darabos – バグ修正および UI 強化
  • Daoyuan Wang – SQL 修正
  • David Lemieux – バグ修正
  • Davies Liu – PySpark 修正とスピル
  • DB Tsai – MLlib のオンラインサマリーとその他の MLlib 機能
  • Derek Ma – バグ修正
  • Doris Xin – MLlib 統計ライブラリおよびいくつかの修正
  • Erik Selin – バグ修正
  • Fireflyc – バグ修正
  • Gabriel Nizzoli – Spark Streaming のバグ修正
  • Gang Bai – MLlib 修正
  • Gera Shegalov – バグ修正
  • Gil Vernik – OpenStack Swift ドキュメント
  • Guancheng Chen – ドキュメント修正
  • Guillaume Ballet – ビルド修正
  • GuoQiang Li – Spark Core および MLlib のバグ修正
  • Guo Wei – Spark SQL のバグ修正
  • Haoyuan Li – Tachyon 修正
  • Hari Shreeharan – Spark Streaming の Flume ポーリングソース
  • Henry Cook – SQL ドキュメントの編集
  • Henry Saputra – ログ記録とドキュメントの修正
  • Hossein Falaki – 最適化修正
  • Ian O Connel – SQL 修正
  • Issac Buenrostro – Spark Streaming のスロットリング
  • Jacek Laskowski – コードのクリーンアップ
  • James Z.M. Gao – ビルド修正
  • Jean-Martin Archer – EC2 スクリプト改善
  • Jeff Thompson – タイプミス修正
  • Jeremy Freeman – Streaming MLlib アルゴリズムと Python 統計カウンター
  • Jerry Shao – シャッフル改善とバグ修正
  • Jiang – ドキュメント修正
  • Jon Sondag – MLlib 修正
  • Joseph Bradley – 決定木 Python API およびその他の MLlib 機能
  • Joseph Gonzalez – GraphX ベンチマークとパーティショニング機能
  • Josh Rosen – Python の最適化と修正、Spark Core および EC2 修正
  • Joy Yoj – ストリーミング修正
  • Jyotiska NK – ドキュメント修正
  • Kalpit Shah – ビルド修正
  • Kan Zhang – Core および Python の修正、PySpark の強化
  • Kay Ousterhout – 入力データのメトリック、コードのクリーンアップと強化
  • K Ballou – ドキュメント修正
  • Ken Takagiwa – バグ修正
  • Koert Kuipers – kryo 設定オプション
  • Kousuke Saruta – Spark Core の安定性修正
  • Larry Xiao – GraphX バグ修正
  • Lars Albertsson – Spark Streaming バグ修正
  • Liang-Chi Hsieh – 最適化
  • Lijie Xu – ログ記録修正
  • Li Pu – MLlib への貢献
  • Liquan Pei – MLlib の Word2Vec
  • Lu Luorta – GraphX 修正
  • Luogan Kun – SQL テスト修正
  • Ly Lai – Spark SQL のバグ修正
  • Madhu Siddalingaiah – 外部ソート機能
  • Manish Amde – 決定木の多クラスサポート
  • Manuel Laflamme – ストリーミング修正
  • Marcelo Vanzin – YARN コードの修正と改善
  • Mark Hamstra – Mesos のバグ修正
  • Mark Wagner – バグ修正
  • Masayoshi Tsuzuki – バグ修正
  • Matei Zaharia – バグとドキュメントの修正、ソートベースシャッフル(リード)および外部ソート
  • Matt Forbes – タイプミス修正
  • Matthew Farrelle - バグ修正
  • Michael Armbrust – Spark SQL の機能およびパフォーマンス強化(リード)
  • Michael Giannakopoulos – MLlib の改善とドキュメント
  • Naftali Harris – バグ修正
  • Nan Zhu – バグ修正およびドキュメント修正
  • Nevelle Li – UI および MLlib のバグ修正
  • Nicholas Chammas – EC2 修正、コードクリーンアップ、およびプロジェクトインフラストラクチャ
  • Nick Pentreath – PySpark の SequenceFile サポート
  • Oleg Danilov – バグ修正
  • Ori Kremer – バグ修正
  • Patrick Wendell – 名前付きアキュムレータ機能および 1.1 リリースマネージャー
  • Peng Zhang – MLlib 修正
  • Peter MacKinnon – ビルド修正
  • Piotr Szul – PySpark 修正
  • Prashant Sharma – ビルドおよび MIMA ツールの作業、REPL のバグ修正
  • Prudhvi Krishna – バグ修正
  • Punya Biswal – Java での subtractByKey
  • Qipinglgp – テスト修正
  • Qiuzhuang Lian – テスト修正
  • Rahul Singhal – YARN およびメトリックの改善
  • Ravikanth Nawada – バグ修正
  • Raymond Liu – バグ修正
  • Reynold Xin – いくつかのバグ修正、リファクタリング、および最適化、netty ネットワークモジュール
  • Reza Zadeh – MLlib のバグおよびドキュメント修正
  • Rishi Verma – ドキュメント修正
  • RJ Nowling – コードのクリーンアップ
  • Rui Li – バグ修正
  • Sameer Agarwal – バグ修正
  • Sandy Ryza – パフォーマンス改善、Spark 設定、および YARN 修正
  • Sarah Gerweck – バグ修正
  • Sean Owen – Core および MLlib のバグ修正およびビルド修正
  • Sebastien Rainville – バグ修正
  • Shixiong Zhu – コードのクリーンアップ
  • Shuo Xiang – MLlib 改善
  • Stephen Boesch – バグおよびドキュメント修正
  • Syed Hashmi – PySpark の機能およびバグ修正
  • Takayu Ueshin – Spark SQL のヌル可能性修正およびその他の改善
  • Tathagata Das – Spark Core のローリングログおよびバグ修正、Spark Streaming の修正および監督
  • Tatiana Borisova – バグ修正
  • Ted Malaska – Streaming の Flume 改善
  • Teng Qiu – SQL および Parquet のバグ修正
  • Timothy Hunter – REPL のバグ修正
  • Tom Graves – YARN サポート(リード)
  • Tor Myklebust – MLlib の ALS 改善
  • U Jing – SQL 修正
  • Uri Laserson – バグ修正
  • Vadim Chekan – ストリーミングのバグ修正
  • Varakhedi Sujeet – EC2 修正
  • Vida Ha – EC2 修正
  • Vlad – ドキュメント修正
  • Wangfei Shi – バグおよびビルド修正
  • Wang Lianhui – バグ修正
  • Wang Tao – バグ修正
  • Wenchen Fan – メモリリーク修正
  • William Benton – Core および SQL のバグ修正、Spark SQL の改善
  • Woshilaiceshide – バグ修正
  • Xiangrui Meng – MLlib へのいくつかの追加(リード)
  • Xi Lui – Spark SQL の UDF 改善
  • Ximo Guanter Gonzalbez – 集計の SQL DSL サポート
  • Yadid Ayzenberg – ドキュメント修正
  • Yadong Qi – コードのクリーンアップ
  • Yanjie Gao – Spark SQL 強化
  • Yantangz Hai – バグ修正
  • Ye Xianjin – バグ修正
  • Yijie Shen – バグ修正
  • Yin Huai – Spark SQL へのいくつかの追加、JSON サポートおよび型 API のリード。
  • Yi Tian – SQL 修正
  • Zhang Liye – バグ修正
  • Zhen Peng – バグ修正
  • Zhihui Li – バグ修正およびスケジューラ機能
  • Zichuan Ye – EC2 修正
  • Zohn Zhao – バグ修正
  • Zongheng Yang – SQL 設定およびその他の改善

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


Spark ニュースアーカイブ