Spark リリース 1.0.0

Spark 1.0.0 は、1.X ラインの開始を示すメジャーリリースです。このリリースでは、1.X ライン全体でさまざまな新機能と強力な API 互換性の保証が提供されます。Spark 1.0 では、Spark で構造化データをロードおよび操作するための新しいメジャーコンポーネントである Spark SQL が追加されました。Spark の既存の標準ライブラリ(MLStreaming、および GraphX)すべてにメジャーな拡張が含まれており、Java および Python の言語サポートも強化されています。最後に、Spark 1.0 では、Hadoop/YARN セキュリティモデルの完全サポートと、サポートされているすべてのクラスタマネージャーの統一されたサブミットプロセスを含む、運用上の改善がもたらされました。

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

API の安定性

Spark 1.0.0 は、1.X メジャーラインの最初のリリースです。Spark は、すべての 1.X リリースでコア API の安定性を保証します。過去にも Spark は API 変更に非常に慎重でしたが、この保証はアプリケーション作成者へのコミットメントを明確に示しています。また、プロジェクトでは、新しいコンポーネントの将来の API 変更に関するガイダンスを提供するために、実験的、アルファ、および開発者 API を明確に注釈付けしています。

YARN セキュリティとの統合

セキュリティが保護された Hadoop 環境で実行しているユーザーのために、Spark は Hadoop/YARN セキュリティモデルと統合されるようになりました。Spark は、ジョブのサブミットを認証し、HDFS 資格情報を安全に転送し、コンポーネント間の通信を認証します。

運用およびパッケージングの改善

このリリースにより、Spark アプリケーションのバンドルとサブミットのプロセスが大幅に簡素化されました。新しい spark-submit ツールを使用すると、ローカルクラスタ、Mesos、または YARN を含む任意の Spark クラスタに、共通のプロセスでアプリケーションをサブミットできます。Spark アプリケーションのバンドルに関するドキュメントが大幅に拡充されました。また、Spark の Web UI 用に履歴サーバーが追加され、個々のアプリケーションが完了した後でも Spark アプリケーションのデータを表示できるようになりました。

Spark SQL

このリリースでは、新しいアルファコンポーネントとして Spark SQL が導入されました。Spark SQL は、外部構造化データソース(現在は Hive および Parquet)から、または既存の RDD にスキーマを追加することによって、Spark で構造化データをロードおよび操作するためのサポートを提供します。Spark SQL の API は RDD データモデルと相互運用可能であり、ユーザーは Spark コードと SQL ステートメントをインターリーブできます。内部では、Spark SQL は Catalyst オプティマイザを使用して効率的な実行プランを選択し、Parquet のようなストレージフォーマットに述語を自動的にプッシュすることができます。将来のリリースでは、Spark SQL は他のストレージシステムへの共通 API も提供する予定です。

MLlib の改善

1.0.0 では、Spark の MLlib が Scala、Java、および Python でスパース特徴量ベクトルをサポートするようになりました。線形メソッド、k-means、およびナイーブベイズで、ストレージと計算の両方でスパース性を活用します。さらに、このリリースでは、分類および回帰のためのスケーラブルな決定木、SVD および PCA を含む分散行列アルゴリズム、モデル評価関数、および最適化プリミティブとしての L-BFGS など、いくつかの新しいアルゴリズムが追加されました。MLlib プログラミングガイドおよびコード例も大幅に拡充されました。

GraphX および Streaming の改善

ユーザビリティと保守性の改善に加えて、Spark 1.0 の GraphX は、グラフのロード、エッジの反転、および近傍計算における大幅なパフォーマンス向上をもたらします。これらの操作は、通信量が少なくなり、よりシンプルな RDD グラフを生成するようになりました。Spark の Streaming モジュールは、ステートフルストリーム変換のパフォーマンス最適化、Flume サポートの改善、および長時間実行ジョブの自動ステートクリーンアップを追加しました。

Java および Python のサポート拡大

Spark 1.0 では、Java バインディングで Java 8 の 新しいラムダ構文をサポートするようになりました。Java 8 は、Scala および Python のクロージャ構文に似た、無名関数を記述するための簡潔な構文をサポートしています。この変更により、現在の Java API のユーザーはわずかな変更が必要となります。これはドキュメントに記載されています。Spark の Python API は、いくつかの新しい関数をサポートするように拡張されました。また、特に大規模データセットにおいて、Python API の安定性もいくつか改善されました。PySpark は YARN 上での実行もサポートするようになりました。

ドキュメント

Spark の プログラミングガイドは、サポートされているすべての言語を中央でカバーし、より多くの演算子と開発ライフサイクルの側面を議論するように大幅に拡張されました。MLlib ガイドも、各アルゴリズムの詳細と例が大幅に拡充され、構成、YARN、および Mesos に関するドキュメントも一新されました。

その他の変更点

  • PySpark は、以前の Python 2.7+ ではなく Python 2.6+、NumPy 1.7+ ではなく NumPy 1.4+ と連携するようになりました。
  • Spark は Avro 1.7.6 にアップグレードされ、Avro 固有の型のサポートが追加されました。
  • アプリケーションが Spark ジョブを監視および計装できるように、内部計装が追加されました。
  • Tachyon のオフヒープストレージのサポートが、特別なビルドターゲットを介して追加されました。
  • DISK_ONLY で永続化されたデータセットは、ディスクに直接書き込まれるようになり、大規模データセットのメモリ使用量が大幅に改善されました。
  • Spark ジョブ中に作成された中間状態は、対応する RDD が参照されなくなったときにガベージコレクションされるようになり、パフォーマンスが向上しました。
  • Spark には、すべての API ドキュメントの Javadoc バージョンと、すべてのモジュールのための 統合 Scaladoc が含まれるようになりました。
  • 新しい SparkContext.wholeTextFiles メソッドにより、小さなテキストファイルを個々のレコードとして操作できます。

Spark 1.0 への移行

Spark API のほとんどは 0.x バージョンと同じままですが、長期的な柔軟性のために、特に Java API(Java 8 ラムダをサポートするため)にいくつかの変更が加えられました。ドキュメントには、アプリケーションをアップグレードするための移行情報が含まれています。

貢献者

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

  • Aaron Davidson – パッケージングおよびデプロイメントの改善、いくつかのバグ修正、local[*] モード
  • Aaron Kimball – ドキュメントの改善
  • Abhishek Kumar – Python の構成修正
  • Ahir Reddy – PySpark のビルド、修正、およびキャンセルサポート
  • Allan Douglas R. de Oliveira – spark-ec2 スクリプトの改善
  • Andre Schumacher – Parquet のサポートと最適化
  • Andrew Ash – Mesos のドキュメントとその他のドキュメントの改善、バグ修正
  • Andrew Or – 履歴サーバー(リード)、ガベージコレクション(リード)、spark-submit、PySpark および YARN の改善
  • Andrew Tulloch – MLlib への貢献とコードのクリーンアップ
  • Andy Konwinski – ドキュメントの修正
  • Anita Tailor – Cassandra の例
  • Ankur Dave – GraphX(リード)の最適化、ドキュメント、およびユーザビリティ
  • Archer Shao – バグ修正
  • Arun Ramakrishnan – ランダムサンプリングの改善
  • Baishuo – テストの改善
  • Bernardo Gomez Palacio – spark-shell の改善と Mesos の更新
  • Bharath Bhushan – バグ修正
  • Bijay Bisht – バグ修正
  • Binh Nguyen – 依存関係の修正
  • Bouke van der Bijl – PySpark on Mesos およびその他の Mesos の修正
  • Bryn Keller – HBase サポートと単体テストの改善
  • Chen Chao – ドキュメント、バグ修正、およびコードのクリーンアップ
  • Cheng Hao – Spark SQL のパフォーマンスと機能の改善
  • Cheng Lian – Spark SQL の列ストレージとその他の改善
  • Christian Lundgren – spark-ec2 スクリプトの改善
  • DB Tsai – MLlib の L-BGFS オプティマイザ、MLlib のドキュメントと修正
  • Dan McClary – 統計カウンターの改善
  • Daniel Darabos – GraphX のパフォーマンス向上
  • Davis Shepherd – バグ修正
  • Diana Carroll – ドキュメントとバグ修正
  • Egor Pakhomov – RDD のローカルイテレータ
  • Emtiaz Ahmed – バグ修正
  • Erik Selin – バグ修正
  • Ethan Jewett – ドキュメントの改善
  • Evan Chan – アプリケーションデータの自動クリーンアップ
  • Evan Sparks – MLlib の最適化とドキュメントの改善
  • Frank Dai – MLlib のコードクリーンアップ
  • Guoqiang Li – ビルドの改善といくつかのバグ修正
  • Ghidireac – バグ修正
  • Haoyuan Li – RDD の Tachyon ストレージレベル
  • Harvey Feng – spark-ec2 の更新
  • Henry Saputra – コードクリーンアップ
  • Henry Cook – Spark SQL の改善
  • Holden Karau – MLlib のクロスバリデーション、Python およびコアエンジンの改善
  • Ivan Wick – Mesos のバグ修正
  • Jey Kottalam – sbt ビルドの改善
  • Jerry Shao – Spark メトリクスと Spark SQL の改善
  • Jiacheng Guo – バグ修正
  • Jianghan – バグ修正
  • Jianping J Wang – MLlib の JBLAS サポート
  • Joseph E. Gonzalez – GraphX の改善、修正、およびドキュメント
  • Josh Rosen – PySpark の改善とバグ修正
  • Jyotiska NK – ドキュメント、テストの改善、およびバグ修正
  • Kan Zhang – Spark コア、SQL、および PySpark のバグ修正
  • Kay Ousterhout – スケジューラのバグ修正とリファクタリング
  • Kelvin Chu – アプリケーションデータの自動クリーンアップ
  • Kevin Mader – 例の修正
  • Koert Kuipers – コードの可視性修正
  • Kousuke Saruta – ドキュメントとビルドの修正
  • Kyle Ellrott – DISK_ONLY パーシステンスのメモリ使用量の改善
  • Larva Boy – Spark SQL の近似カウント
  • Madhu Siddalingaiah – ec2 の修正
  • Manish Amde – MLlib の決定木
  • Marcelo Vanzin – YARN サポートの改善と修正、依存関係のクリーンアップ
  • Mark Grover – ビルドの修正
  • Mark Hamstra – ビルドおよび依存関係の改善、スケジューラのバグ修正
  • Margin Jaggi – MLlib のドキュメントの改善
  • Matei Zaharia – MLlib のいくつかのアルゴリズムの Python バージョン、spark-submit の改善、バグ修正、およびドキュメントの改善
  • Michael Armbrust – Spark SQL(リード)、RDD のスキーマサポート、catalyst オプティマイザ、および Hive サポートを含む
  • Mridul Muralidharan – コードの可視性変更とバグ修正
  • Nan Zhu – バグおよび安定性の修正、コードのクリーンアップ、ドキュメント、および新機能
  • Neville Li – バグ修正
  • Nick Lanham – ディストリビューションスクリプトでの Tachyon バンドル
  • Nirmal Reddy – コードクリーンアップ
  • OuYang Jin – ローカルモードと JSON の改善
  • Patrick Wendell – リリースマネージャー、ビルドの改善、バグ修正、およびコードのクリーンアップ
  • Petko Nikolov – 新しいユーティリティ関数
  • Prabeesh K – タイプミス修正
  • Prabin Banka – 新しい PySpark API
  • Prashant Sharma – PySpark の改善、Java 8 ラムダサポート、およびビルドの改善
  • Punya Biswal – Java API の改善
  • Qiuzhuang Lian – バグ修正
  • Rahul Singhal – ビルドの改善、バグ修正
  • Raymond Liu – YARN ビルドの修正と UI の改善
  • Reynold Xin – バグ修正、内部変更、Spark SQL の改善、ビルドの修正、およびスタイル改善
  • Reza Zadeh – MLlib の SVD 実装およびその他の MLlib への貢献
  • Roman Pastukhov – ブロードキャストファイルのクリーンアップ
  • Rong Gu – RDD の Tachyon ストレージレベル
  • Sandeep Sing – いくつかのバグ修正、MLlib の改善、および Spark 例の修正
  • Sandy Ryza – spark-submit スクリプトおよびいくつかの YARN 改善
  • Saurabh Rawat – Java API の改善
  • Sean Owen – いくつかのビルド改善、コードクリーンアップ、および MLlib 修正
  • Semih Salihoglu – GraphX の改善
  • Shaocun Tian – MLlib のバグ修正
  • Shivaram Venkataraman – バグ修正
  • Shixiong Zhu – コードスタイルと正確性の修正
  • Shiyun Wxm – タイプミス修正
  • Stevo Slavic – バグ修正
  • Sumedh Mungee – ドキュメントの修正
  • Sundeep Narravula – Spark UI の「キャンセル」ボタン
  • Takayu Ueshin – Spark SQL のバグ修正と改善
  • Tathagata Das – Spark Streaming の Web UI およびその他の改善(リード)、バグ修正、ステートクリーンアップ、およびリリースマネージャー
  • Timothy Chen – Spark SQL の改善
  • Ted Malaska – Flume サポートの改善
  • Tom Graves – Hadoop セキュリティ統合(リード)および YARN サポート
  • Tianshuo Deng – バグ修正
  • Tor Myklebust – ALS の改善
  • Wangfei – Spark SQL ドキュメント
  • Wang Tao – コードクリーンアップ
  • William Bendon – JSON サポートの変更とバグ修正
  • Xiangrui Meng – MLlib のいくつかの改善(リード)
  • Xuan Nguyen – ビルド修正
  • Xusen Yin – MLlib への貢献とバグ修正
  • Ye Xianjin – テスト修正
  • Yinan Li – addFile の改善
  • Yin Hua – Spark SQL の改善
  • Zheng Peng – バグ修正

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


Spark ニュースアーカイブ