Spark Release 0.9.0

Spark 0.9.0 は、多くの新機能が追加されたメジャーリリースです。Spark を Scala 2.10 にアップデートし、高可用性を簡素化し、プロジェクトの多数のコンポーネントを更新しました。このリリースには、グラフ処理のための強力な新フレームワークである GraphX の最初のバージョンが含まれており、標準的なアルゴリズムのライブラリも付属しています。さらに、Spark Streaming はアルファ版を卒業し、大幅な最適化と簡素化された高可用性デプロイメントが含まれています。

Spark 0.9.0 は、ソースパッケージ (5 MB tgz) または、Hadoop 1 / CDH3CDH4、または Hadoop 2 / CDH5 / HDP2 (160 MB tgz) 用のビルド済みパッケージとしてダウンロードできます。リリース署名とチェックサムは、公式の Apache ダウンロードサイト で入手できます。

Scala 2.10 サポート

Spark は Scala 2.10 上で動作するようになり、ユーザーはこのバージョンでの言語とライブラリの改善の恩恵を受けることができます。

設定システム

新しい SparkConf クラスが、SparkContext の高度な設定を行うための推奨される方法となりました。ただし、以前の Java システムプロパティ方式も引き続き機能します。SparkConf は、テスト中にプロパティがテスト間で保持されないようにするために特に役立ちます。

Spark Streaming の改善

Spark Streaming はアルファ版を卒業し、高可用性が簡素化され、いくつかの最適化が施されています。

  • スタンドアロンクラスタ高可用性モードで Spark スタンドアロンクラスタ上で実行する場合、Spark Streaming ドライバーアプリケーションをクラスタに送信し、ドライバーまたはクラスタマスターのいずれかがクラッシュした場合に自動的に回復させることができます。
  • ウィンドウ演算子の速度が 30-50% 向上しました。
  • Spark Streaming の入力ソースプラグイン (Twitter, Kafka, Flume など) は、個別の Maven モジュールになりました。これにより、必要な依存関係のみを簡単に取り込むことができます。
  • ストリーミング計算の統計情報を監視するための新しい StreamingListener インターフェースが追加されました。
  • API のいくつかの側面が改善されました。
    • DStream および PairDStream クラスは、org.apache.spark.rdd.RDD との一貫性を保つために、org.apache.spark.streaming から org.apache.spark.streaming.dstream に移動されました。
    • DStream.foreach は、各要素ではなく各 RDD に対して機能することが明示されるように、foreachRDD にリネームされました。
    • StreamingContext.awaitTermination() を使用すると、コンテキストのシャットダウンを待機し、ストリーミング計算で発生する例外をキャッチできます。*StreamingContext.stop() は、基盤となる SparkContext を停止せずに StreamingContext を停止できるようになりました。

GraphX アルファ版

GraphX は、グラフ並列計算における最新の進歩を活用した、グラフ処理のための新しいフレームワークです。標準的な Spark 演算子を使用して Spark プログラム内でグラフを構築し、分散計算用に最適化された新しいグラフ演算子で処理できます。これには、基本的な変換、反復計算のための Pregel API、および標準的な グラフローダー分析アルゴリズム のライブラリが含まれています。これらの機能を Spark エンジン *内* で提供することにより、GraphX は異なるエンジンを使用するワークフローと比較して、処理パイプラインを大幅に高速化できます。

このリリースにおける GraphX の機能:

  • 任意の Spark RDD からグラフを構築
  • グラフを変換したり、サブグラフを抽出したりするための基本的な操作
  • グラフのパーティショニングとインデックス作成を活用した最適化された Pregel API
  • PageRank連結成分強連結成分SVD++三角数 を含む標準アルゴリズム
  • Spark シェルからのインタラクティブな使用

GraphX はこの最初のリリースではまだアルファ版としてマークされていますが、新しいユーザーには、より限定的な Bagel API よりもこちらを使用することをお勧めします。

MLlib の改善

  • Spark の機械学習ライブラリ (MLlib) が Python でも利用可能になりました。NumPy データ上で動作します (現在、Python 2.7 および NumPy 1.7 が必要です)。
  • ナイーブベイズ分類のための新しいアルゴリズムが追加されました。
  • 最小二乗法 (ALS) モデルを使用して、複数のアイテムの評価を並列で予測できるようになりました。
  • MLlib のドキュメントが拡張され、Scala、Java、Python での例が追加されました。

Python の変更

  • Python ユーザーは MLlib を使用できるようになりました (Python 2.7 および NumPy 1.7 が必要です)。
  • PySpark は、Spark アプリケーション UI (http://:4040) で実行中のジョブのコールサイトを表示するようになり、コードのどの部分が実行されているかを簡単に確認できるようになりました。
  • IPython 統合が更新され、新しいバージョンで動作するようになりました。

パッケージング

  • Spark のスクリプトは、「bin」と「sbin」のディレクトリに整理され、管理スクリプトとユーザー用スクリプトを分離しやすくし、Spark を標準的な Linux パスにインストールしやすくしました。
  • ログ設定が改善され、Spark は log4j.properties ファイルを指定しない場合でもデフォルトのものを検索するようになりました。

コアエンジン

  • Spark のスタンドアロンモードは、送信元の外部マシンではなくクラスタ上で実行されるドライバープログラムの送信をサポートするようになりました。この機能は org.apache.spark.deploy.Client クラスからアクセスできます。
  • 大きな reduce 操作は、メモリに収まらないデータを自動的にディスクにスピルするようになりました。
  • スタンドアロンモードのユーザーは、アプリケーションのサイズが設定されていない場合に、アプリケーションがデフォルトで使用するコア数を制限できるようになりました。以前は、そのようなアプリケーションはクラスタの利用可能なすべてのコアを使用していました。
  • spark-shell は、起動時にスクリプトを実行するための -i オプションをサポートするようになりました。
  • 数値データを扱うための新しい histogram および countDistinctApprox 演算子が追加されました。
  • YARN モードは、アプリケーションに追加ファイルを配布することをサポートし、いくつかのバグが修正されました。

互換性

このリリースは、安定したコンポーネントの以前の API と互換性がありますが、いくつかの言語バージョンとスクリプトの場所が変更されました。

  • Scala プログラムは、2.9 ではなく Scala 2.10 を使用する必要があります。
  • spark-shellpyspark などのスクリプトは bin フォルダに移動され、スタンドアロンクラスタの起動と停止を行う管理スクリプトは sbin に移動されました。
  • Spark Streaming の API は、外部入力ソースを個別のモジュールに移動するように変更されました。DStream および PairDStreamorg.apache.spark.streaming.dstream パッケージに移動され、DStream.foreachforeachRDD にリネームされました。Spark Streaming がアルファ版を卒業したため、現在の API は安定すると予想されます。
  • Java システムプロパティを介した Spark の設定の古い方法も引き続き機能しますが、ユーザーは、より検査および使用が容易な新しい [SparkConf] に更新することをお勧めします。

Spark 1.0 リリース時には、Spark 0.9 の現在の API とスクリプトの場所はすべて安定したままであると予想されます。新しい API への移行機会をユーザーに提供するために、これらの更新を早期に行いました。

貢献者

このリリースには以下の開発者が貢献しました

  • Andrew Ash – ドキュメントの改善
  • Pierre Borckmans – ドキュメントの修正
  • Russell Cardullo – メトリクスの graphite sink
  • Evan Chan – local:// URI 機能
  • Vadim Chekan – バグ修正
  • Lian Cheng – 複数の場所でのリファクタリングとコードクリーンアップ、バグ修正
  • Ewen Cheslack-Postava – Spark EC2 および PySpark の改善
  • Mosharaf Chowdhury – ブロードキャストの最適化
  • Dan Crankshaw – GraphX への貢献
  • Haider Haidi – ドキュメントの修正
  • Frank Dai – MLlib のナイーブベイズ分類器、ドキュメントの改善
  • Tathagata Das – Spark Streaming の新しい演算子、修正、および改善 (リード)
  • Ankur Dave – GraphX への貢献
  • Henry Davidge – 大きなタスクに対する警告
  • Aaron Davidson – シャッフルファイル統合、スタンドアロンスケジューラの高可用性モード、各種改善と修正
  • Kyle Ellrott – GraphX への貢献
  • Hossein Falaki – 新しい統計演算子、MLlib での Scala および Python の例
  • Harvey Feng – Hadoop ファイルの最適化と YARN 統合
  • Ali Ghodsi – SIMR のサポート
  • Joseph E. Gonzalez – GraphX への貢献
  • Thomas Graves – YARN サポートの修正と改善 (リード)
  • Rong Gu – ドキュメントの修正
  • Stephen Haberman – バグ修正
  • Walker Hamilton – バグ修正
  • Mark Hamstra – スケジューラおよびビルドの改善と修正
  • Damien Hardy – Debian ビルド修正
  • Nathan Howell – sbt アップグレード
  • Grace Huang – メトリクスコードの改善
  • Shane Huang – 管理スクリプトとユーザー用スクリプトの分離
  • Prabeesh K – Spark Streaming の MQTT 統合とコード修正
  • Holden Karau – sbt ビルドの改善と Java API 拡張
  • KarthikTunga – バグ修正
  • Grega Kespret – バグ修正
  • Marek Kolodziej – 最適化された乱数ジェネレータ
  • Jey Kottalam – EC2 スクリプトの改善
  • Du Li – バグ修正
  • Haoyuan Li – EC2 での tachyon サポート
  • LiGuoqiang – ビルドおよび YARN 統合の修正
  • Raymond Liu – ビルドの改善と YARN サポートの各種修正
  • George Loentiev – Maven ビルド修正
  • Akihiro Matsukawa – GraphX への貢献
  • David McCauley – JSON エンドポイントの改善
  • Mike – バグ修正
  • Fabrizio (Misto) Milo – バグ修正
  • Mridul Muralidharan – 推測実行の改善、各種バグ修正
  • Tor Myklebust – Python mllib バインディング、タスクシリアライゼーションのインストルメンテーション
  • Sundeep Narravula – バグ修正
  • Binh Nguyen – Java API の改善とバージョンアップ
  • Adam Novak – バグ修正
  • Andrew Or – 外部ソート
  • Kay Ousterhout – Spark スケジューラの各種バグ修正と改善
  • Sean Owen – スタイルの修正
  • Nick Pentreath – ALS Implicit Feedback アルゴリズム
  • Pillis – Vector.random() メソッド
  • Imran Rashid – バグ修正
  • Ahir Reddy – SIMR のサポート
  • Luca Rosellini – Scala シェル用のスクリプトロード
  • Josh Rosen – Scala および Java API の修正、クリーンアップ、拡張
  • Henry Saputra – スタイルの改善とクリーンアップ
  • Andre Schumacher – Python の改善とバグ修正
  • Jerry Shao – マルチユーザーサポート、各種修正と改善
  • Prashant Sharma – Scala 2.10 サポート、設定システム、各種小規模修正
  • Shiyun – スタイルの修正
  • Wangda Tan – UI の改善とバグ修正
  • Matthew Taylor – バグ修正
  • Jyun-Fan Tsai – ドキュメントの修正
  • Takuya Ueshin – バグ修正
  • Shivaram Venkataraman – sbt ビルドの最適化、EC2 の改善、Java および Python API
  • Jianping J Wang – GraphX への貢献
  • Martin Weindel – ビルド修正
  • Patrick Wendell – スタンドアロンドライバー送信、各種修正、リリース管理者
  • Neal Wiggins – バグ修正
  • Andrew Xia – バグ修正とコードクリーンアップ
  • Reynold Xin – GraphX への貢献、タスクキル、各種修正、改善、最適化
  • Dong Yan – バグ修正
  • Haitao Yao – バグ修正
  • Xusen Yin – バグ修正
  • Fengdong Yu – ドキュメント修正
  • Matei Zaharia – 新しい設定システム、Python MLlib バインディング、スケジューラ改善、各種修正と最適化
  • Wu Zeming – バグ修正
  • Nan Zhu – ドキュメントの改善

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


Spark ニュースアーカイブ