Spark リリース 0.8.1

Apache Spark 0.8.1 は、Spark の Scala 2.9 バージョン向けのメンテナンスおよびパフォーマンスリリースです。また、Spark 0.9 に搭載される予定のスタンドアロンモードの高可用性など、いくつかの新機能も追加されていますが、開発者はこれらを Scala 2.9 で利用できるようにしたいと考えていました。0.8.1 には 41 人の開発者が貢献しました。

YARN 2.2 サポート

YARN 2.2 以降で Spark を実行するためのサポートが追加されました。以前のバージョンと 2.2+ の間で YARN API に変更があったため、Spark 0.8.0 ではサポートされていませんでした。YARN 2.2 以降用に Spark をビルドする方法の詳細な手順については、YARN ドキュメントを参照してください。YARN 2.2 用のコンパイル済みバイナリも同梱しています。

スタンドアロンクラスターマネージャーの高可用性モード

スタンドアロンクラスターマネージャーには、マスターの障害を許容できる高可用性 (H/A) モードが追加されました。これは、ストリーミングジョブや Shark サーバーなど、スケジューラーマスターが単一障害点となっていた長時間実行アプリケーションに特に役立ちます。H/A モードのデプロイ手順は、ドキュメントに含まれています。現在の実装では、調整のために Zookeeper を使用しています。

パフォーマンス最適化

このリリースでは、いくつかのパフォーマンス最適化が追加されています。

  • シャッフルデータのハッシュテーブルの最適化 - メモリと CPU の消費を削減します。
  • JobConfs の効率的なエンコーディング - HDFS、S3、HBase から大量のブロックを読み取るステージのレイテンシを改善します。
  • シャッフルファイル統合 (デフォルト無効) - 大規模なシャッフルで作成されるファイル数を削減し、ファイルシステムのパフォーマンスを向上させます。この変更は ext3 よりも新しいファイルシステム (ext4 または XFS を推奨) で最も効果的であり、Spark 0.9 ではデフォルトになりますが、互換性のためにデフォルトでは無効のままにしています。ext3 を使用していないユーザーは、spark.shuffle.consolidateFiles を「true」に設定して有効にすることをお勧めします。
  • Torrent broadcast (デフォルト無効) - 大規模オブジェクト向けの高速なブロードキャスト実装です。
  • 大規模な結果セットのフェッチのサポート - Akka のバッファサイズを調整せずに、タスクが大きな結果を返すことができるようになります。

MLlib の改善

  • 暗黙的フィードバックのための交代最小二乗法行列分解の新しいバリアントが追加されました。

Python の改善

  • Spark の設定プロパティを Python から直接設定できるようになりました。
  • Python でソート操作がサポートされるようになりました。
  • Accumulator に明示的に名前が付けられた add メソッドが追加されました。

新しい演算子と使いやすさの改善

  • local:// URI - ユーザーがスレーブに既に存在するファイルを依存関係として指定できるようになります。
  • UI に新しい「結果フェッチ」状態が追加されました。
  • 新しい Spark Streaming 演算子: transformWith, leftInnerJoin, rightOuterJoin
  • 新しい Spark 演算子: repartition
  • スタンドアロンモードと Mesos モードで、Spark アプリケーションを別のユーザーとして実行できるようになりました。

注目すべきバグ修正

  • Kafka から Spark Streaming への取り込みにおけるデータ損失を引き起こす可能性のあるエッジケースを修正しました。
  • 特定のタスク障害後のスケジューラーのハングに対する修正。
  • ストリーミング例のログ出力が妨げられるパッケージングバグを修正しました。
  • UI の特定のフィールドでのソート順序が修正されました。

クレジット

  • Michael Armbrust – ビルド修正
  • Pierre Borckmans – ドキュメントのタイポ修正
  • Evan Chan – 依存関係 JAR の local:// スキーム
  • Ewen Cheslack-Postava – Python accumulator の add メソッド、Python での設定プロパティ設定のサポート
  • Mosharaf Chowdhury – ブロードキャスト実装の最適化
  • Frank Dai – ドキュメント修正
  • Aaron Davidson – シャッフルファイル統合、スタンドアロンスケジューラーの H/A モード、ブロック ID の表現のクリーンアップ、いくつかの改善とバグ修正
  • Tathagata Das – 新しいストリーミング演算子、Kafka の同時実行バグの修正
  • Ankur Dave – EC2 でのスポットクラスターの一時停止のサポート
  • Harvey Feng – JobConf ブロードキャストの最適化、バグ修正、YARN 2.2 ビルド
  • Ali Ghodsi – YARN 2.2 ビルド
  • Thomas Graves – YARN を介したセキュアな HDFS アクセスを含む Spark YARN 統合
  • Li Guoqiang – Maven ビルドの修正
  • Stephen Haberman – バグ修正
  • Haidar Hadi – ドキュメント修正
  • Nathan Howell – YARN 関連のバグ修正
  • Holden Karau – mapPartitionsWithIndex の Java バージョン
  • Du Li – make-distribution.sh のバグ修正
  • Raymond Liu – YARN 2.2 ビルドに関する作業
  • Xi Liu – バグ修正とコードのクリーンアップ
  • David McCauley – スタンドアロンモード JSON 出力のバグ修正
  • Michael (wannabeast) – メモリストアのバグ修正
  • Fabrizio Milo – ドキュメントのタイポ、DAGScheduler のクリーンアップ、scaladoc のタイポ
  • Mridul Muralidharan – メタデータクリーナーと投機的実行の修正
  • Sundeep Narravula – ビルド修正、スケジューラーとテストのバグ修正、コードのクリーンアップ
  • Kay Ousterhout – 結果フェッチの最適化、UI の新情報、スケジューラーのクリーンアップとバグ修正
  • Nick Pentreath – ALS アルゴリズムの暗黙的フィードバックバリアント
  • Imran Rashid – エグゼキューター起動の改善
  • Ahir Reddy – SIMR の Spark サポート
  • Josh Rosen – メモリ使用量の最適化、BlockManager コードのクリーンアップ、Java および Python のクリーンアップ/修正
  • Henry Saputra – ビルド修正
  • Jerry Shao – 公平スケジューラーのリファクタリング、特定のユーザーとして Spark を実行するサポート、バグ修正
  • Mingfei Shi – JobLogger のドキュメント
  • Andre Schumacher – PySpark の sortByKey および関連する変更
  • Karthik Tunga – 起動スクリプトのバグ修正
  • Patrick Wendell – repartition 演算子、シャッフル書き込みメトリクス、各種修正およびリリース管理
  • Neal Wiggins – インポートのクリーンアップ、ドキュメント修正
  • Andrew Xia – UI のバグ修正
  • Reynold Xin – タスクキリング、Spark シェルでのジョブプロパティ設定のサポート、ロギングの改善、Kryo の改善、いくつかのバグ修正
  • Matei Zaharia – シャッフルデータのハッシュマップの最適化、PySpark ドキュメント、Kryo シリアライザーの最適化
  • Wu Zeming – エグゼキューター UI のバグ修正

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


Spark ニュースアーカイブ