Spark 1.0.0 は、1.X ラインの開始を示すメジャーリリースです。このリリースでは、1.X ライン全体でさまざまな新機能と強力な API 互換性の保証が提供されます。Spark 1.0 では、Spark で構造化データをロードおよび操作するための新しいメジャーコンポーネントである Spark SQL が追加されました。Spark の既存の標準ライブラリ(ML、Streaming、および GraphX)すべてにメジャーな拡張が含まれており、Java および Python の言語サポートも強化されています。最後に、Spark 1.0 では、Hadoop/YARN セキュリティモデルの完全サポートと、サポートされているすべてのクラスタマネージャーの統一されたサブミットプロセスを含む、運用上の改善がもたらされました。
Spark 1.0.0 は、ソースパッケージ (5 MB tgz) または Hadoop 1 / CDH3、CDH4、または Hadoop 2 / CDH5 / HDP2 (160 MB tgz) 用にビルド済みのパッケージとしてダウンロードできます。リリース署名とチェックサムは、公式の Apache ダウンロードサイトで入手できます。
Spark 1.0.0 は、1.X メジャーラインの最初のリリースです。Spark は、すべての 1.X リリースでコア API の安定性を保証します。過去にも Spark は API 変更に非常に慎重でしたが、この保証はアプリケーション作成者へのコミットメントを明確に示しています。また、プロジェクトでは、新しいコンポーネントの将来の API 変更に関するガイダンスを提供するために、実験的、アルファ、および開発者 API を明確に注釈付けしています。
セキュリティが保護された Hadoop 環境で実行しているユーザーのために、Spark は Hadoop/YARN セキュリティモデルと統合されるようになりました。Spark は、ジョブのサブミットを認証し、HDFS 資格情報を安全に転送し、コンポーネント間の通信を認証します。
このリリースにより、Spark アプリケーションのバンドルとサブミットのプロセスが大幅に簡素化されました。新しい spark-submit ツールを使用すると、ローカルクラスタ、Mesos、または YARN を含む任意の Spark クラスタに、共通のプロセスでアプリケーションをサブミットできます。Spark アプリケーションのバンドルに関するドキュメントが大幅に拡充されました。また、Spark の Web UI 用に履歴サーバーが追加され、個々のアプリケーションが完了した後でも Spark アプリケーションのデータを表示できるようになりました。
このリリースでは、新しいアルファコンポーネントとして Spark SQL が導入されました。Spark SQL は、外部構造化データソース(現在は Hive および Parquet)から、または既存の RDD にスキーマを追加することによって、Spark で構造化データをロードおよび操作するためのサポートを提供します。Spark SQL の API は RDD データモデルと相互運用可能であり、ユーザーは Spark コードと SQL ステートメントをインターリーブできます。内部では、Spark SQL は Catalyst オプティマイザを使用して効率的な実行プランを選択し、Parquet のようなストレージフォーマットに述語を自動的にプッシュすることができます。将来のリリースでは、Spark SQL は他のストレージシステムへの共通 API も提供する予定です。
1.0.0 では、Spark の MLlib が Scala、Java、および Python でスパース特徴量ベクトルをサポートするようになりました。線形メソッド、k-means、およびナイーブベイズで、ストレージと計算の両方でスパース性を活用します。さらに、このリリースでは、分類および回帰のためのスケーラブルな決定木、SVD および PCA を含む分散行列アルゴリズム、モデル評価関数、および最適化プリミティブとしての L-BFGS など、いくつかの新しいアルゴリズムが追加されました。MLlib プログラミングガイドおよびコード例も大幅に拡充されました。
ユーザビリティと保守性の改善に加えて、Spark 1.0 の GraphX は、グラフのロード、エッジの反転、および近傍計算における大幅なパフォーマンス向上をもたらします。これらの操作は、通信量が少なくなり、よりシンプルな RDD グラフを生成するようになりました。Spark の Streaming モジュールは、ステートフルストリーム変換のパフォーマンス最適化、Flume サポートの改善、および長時間実行ジョブの自動ステートクリーンアップを追加しました。
Spark 1.0 では、Java バインディングで Java 8 の 新しいラムダ構文をサポートするようになりました。Java 8 は、Scala および Python のクロージャ構文に似た、無名関数を記述するための簡潔な構文をサポートしています。この変更により、現在の Java API のユーザーはわずかな変更が必要となります。これはドキュメントに記載されています。Spark の Python API は、いくつかの新しい関数をサポートするように拡張されました。また、特に大規模データセットにおいて、Python API の安定性もいくつか改善されました。PySpark は YARN 上での実行もサポートするようになりました。
Spark の プログラミングガイドは、サポートされているすべての言語を中央でカバーし、より多くの演算子と開発ライフサイクルの側面を議論するように大幅に拡張されました。MLlib ガイドも、各アルゴリズムの詳細と例が大幅に拡充され、構成、YARN、および Mesos に関するドキュメントも一新されました。
DISK_ONLY で永続化されたデータセットは、ディスクに直接書き込まれるようになり、大規模データセットのメモリ使用量が大幅に改善されました。Spark API のほとんどは 0.x バージョンと同じままですが、長期的な柔軟性のために、特に Java API(Java 8 ラムダをサポートするため)にいくつかの変更が加えられました。ドキュメントには、アプリケーションをアップグレードするための移行情報が含まれています。
このリリースには以下の開発者が貢献しました
貢献してくださった皆様、ありがとうございました!