Spark リリース 0.7.0
Spark チームは、いくつかの新機能をもたらすメジャーリリースであるバージョン 0.7.0 のリリースを誇りに思います。最も注目すべきは、Spark 用 Python API と Spark Streaming のアルファ版です。(Spark Streaming の詳細については、こちらの 技術レポートでも確認できます。) このリリースでは、全体的に多数の改善も追加されています。全体として、これは 31 名の貢献者 (うち 20 名はバークレー外部) による、これまでで最大のリリースです。
Spark 0.7.0 は、ソースパッケージ (4 MB tar.gz) または 事前ビルド済みパッケージ (60 MB tar.gz) としてダウンロードできます。
Python API
Spark 0.7 は、PySpark と呼ばれる Python API を追加しました。これにより、スタンドアロンプログラムとインタラクティブ Python シェルの両方で、Python から Spark を使用できるようになります。標準の CPython ランタイムを使用するため、プログラムは NumPy や SciPy などのネイティブライブラリを呼び出すことができます。Scala および Java API と同様に、PySpark はメインプログラムから関数と、それらが依存する変数を自動的にクラスターに送信します。PySpark は、RDD、アキュムレータ、ブロードキャスト変数、HDFS の入出力をはじめ、ほとんどの Spark 機能に対応しています。
Spark Streaming アルファ
Spark Streaming は、Spark の新しい拡張機能であり、ニアリアルタイム処理機能を追加します。これは、ユーザーが次のような並列操作を使用してストリームを変換できる、シンプルで高レベルな API を提供します。map, filter, reduceと、新しいスライディングウィンドウ関数。これはクラスター全体で自動的に作業を分散し、高価な外部システムへのトランザクションに依存することなく、変換に対して正確に一度のセマンティクスで効率的なフォールトリカバリを提供します。Spark Streaming の詳細は、これらのスライドと当社の技術レポートで説明されています。このリリースは Spark Streaming の最初のアルファ版であり、ほとんどの機能が実装され、Java および Scala で API が提供されています。
メモリダッシュボード
Spark ジョブは現在、プログラム内の各分散データセット (RDD) のメモリ使用量を監視するための Web ダッシュボードを起動します。ログで次のような行を探してください。
15:08:44 INFO BlockManagerUI: Started BlockManager web UI at http://mbk.local:63814
プロパティを通じて使用するポートを制御することもできます。spark.ui.portプロパティ。
Maven ビルド
Spark は、SBT に加えて、Maven を使用してもビルドできるようになりました。Maven ビルドにより、選択したリポジトリへの公開が容易になり、Maven プロファイル (-Phadoop1、-Phadoop2) を使用して Hadoop バージョンを簡単に選択できるようになります。また、mvn -Phadoop1,deb install を使用した Debian パッケージングも可能です。-Phadoop1または-Phadoop2、およびmvn -Phadoop1,deb install.
新規操作
このリリースでは、keys、values、keyBy、subtract、coalesce、zip など、いくつかの RDD 変換が追加されました。また、SparkContext.hadoopConfiguration が追加され、プログラムが操作全体で Hadoop の入出力設定をグローバルに構成できるようになりました。最後に、トラブルシューティングのために RDD の lineage グラフを出力するために使用できる RDD.toDebugString() メソッドが追加されました。keys, values, keyBy, subtract, coalesce, zip。また、SparkContext.hadoopConfiguration が追加され、プログラムが操作全体で Hadoop の入出力設定をグローバルに構成できるようになりました。最後に、トラブルシューティングのために RDD の lineage グラフを出力するために使用できる RDD.toDebugString() メソッドが追加されました。SparkContext.hadoopConfiguration、およびRDD.toDebugString() メソッドが追加されました。これは、トラブルシューティングのために RDD の lineage グラフを出力するために使用できます。RDD.toDebugString()メソッド。これは RDD の lineage グラフを出力するために使用できます。
EC2 の改善
- Spark は、設定されている場合、Amazon S3 へのアクセスを容易にするために、AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY 環境変数から S3 認証情報を読み取るようになりました。AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY環境変数。
- このリリースでは、S3 アクセスに関するバグが修正されました。このバグは、ストリームが完全に読み取られない場合 (たとえば、RDD.first() や制限付きの SQL クエリを呼び出す場合) にストリームを開いたままにし、ノードがハングする原因となっていました。RDD.first()または制限付きの SQL クエリ。
- EC2 スクリプトは、スタンドアロンクラスターと Mesos クラスターの両方をサポートし、クラスターで Ganglia を起動するようになりました。
- Spark EC2 クラスターは、複数のアベイラビリティーゾーンにまたがって展開できるようになりました。
その他の改善
- シャッフル操作 (例: groupByKey、reduceByKey) は、(spark.default.parallelism が設定されていない限り) 親 RDD のサイズから並列度を推測するようになりました。groupByKeyandreduceByKey、およびspark.default.parallelismが設定されている場合。
- シャッフルのパフォーマンスが向上しました。
- スタンドアロンデプロイクラスターは、デフォルトでジョブをマシン全体に分散するようになり、データローカリティが向上しました。
- リソース不足でジョブが起動しない場合に、エラーレポートが改善されました。
- スタンドアロンデプロイ Web UI には、クラスターの状態を照会するための JSON エンドポイントが含まれるようになりました。
- IBM JVM のサポートが向上しました。
- デフォルトの Hadoop バージョンの依存関係が 1.0.4 に更新されました。
- エラーメッセージの失敗処理とレポートが改善されました。
- スタンドアロンクラスターデーモンとユーザーアプリケーションで、設定が分離されました。
- スケジューラコードベースの大幅なリファクタリングにより、より豊富な単体テストが可能になりました。
- 全体的に、いくつかのバグ修正とパフォーマンス改善が行われました。
互換性
このリリースは Spark 0.6 プログラムと API 互換ですが、以下の機能はわずかに変更されました。
- 並列度を指定しない並列シャッフル操作は、定数デフォルトではなく、親 RDD のパーティション数を使用するようになりました。ただし、spark.default.parallelism を設定した場合、それは使用されます。spark.default.parallelism、その値が使用されます。
- SparkContext.addFileは、ワーカーノードにファイルを配布しますが、Executor の作業ディレクトリに配置されることは保証されなくなりました。代わりに、使用されたディレクトリは SparkFiles.getRootDirectory で見つけることができます。また、SparkFiles.get を使用して特定のファイルを取得することもできます。これは、ローカルモードで実行する際にローカルディレクトリが散らかるのを避けるために行われました。SparkFiles.getRootDirectory、またはSparkFiles.get を使用して特定のファイルを取得することもできます。SparkFiles.get。これは、ローカルモードで実行する際にローカルディレクトリが散らかるのを避けるために行われました。
クレジット
Spark 0.7 は、バークレー内外の多くの貢献者による作業でした。合計 31 名の異なる貢献者があり、そのうち 20 名はバークレー外部からの参加でした。以下は、貢献した人々とその貢献分野です。
- Mikhail Bautin -- Maven ビルド
- Denny Britz -- メモリダッシュボード、ストリーミング、バグ修正
- Paul Cavallaro -- エラーレポート
- Tathagata Das -- ストリーミング (リード開発者)、24 時間 365 日運用、バグ修正、ドキュメント
- Thomas Dudziak -- Maven ビルド、Hadoop 2 サポート
- Harvey Feng -- バグ修正
- Stephen Haberman -- 新しい RDD 操作、設定、S3 の改善、コードクリーニング、バグ修正
- Tyson Hamilton -- JSON ステータスエンドポイント
- Mark Hamstra -- API の改善、ドキュメント
- Michael Heuer -- ドキュメント
- Shane Huang -- シャッフルパフォーマンス修正
- Andy Konwinski -- ドキュメント
- Ryan LeCompte -- ストリーミング
- Haoyuan Li -- ストリーミング
- Richard McKinley -- ビルド
- Sean McNamara -- ストリーミング
- Lee Moon Soo -- バグ修正
- Fernand Pajot -- バグ修正
- Nick Pentreath -- Python API、サンプル
- Andrew Psaltis -- バグ修正
- Imran Rashid -- メモリダッシュボード、バグ修正
- Charles Reiss -- フォールトリカバリ修正、コードクリーニング、テスト容易性、エラーレポート
- Josh Rosen -- Python API (リード開発者)、EC2 スクリプト、バグ修正
- Peter Sankauskas -- EC2 スクリプト
- Prashant Sharma -- ストリーミング
- Shivaram Venkataraman -- EC2 スクリプト、最適化
- Patrick Wendell -- ストリーミング、バグ修正、サンプル、ドキュメント
- Reynold Xin -- 最適化、UI
- Haitao Yao -- 実行スクリプト
- Matei Zaharia -- ストリーミング、フォールトリカバリ、Python API、コードクリーニング、バグ修正、ドキュメント
- Eric Zhang -- サンプル
貢献してくださった皆様、ありがとうございました!
Spark ニュースアーカイブ