夢とガラクタの集積場

落ちこぼれ三流エンジニアである管理人の夢想=『夢』と、潰えた夢=『ガラクタ』の集積場です。

Apache Spark 0.8.0の新機能

こんにちは。

前回まででApache Spark & Streamingの概要がわかったので、
とりあえず実際の環境を構築してみよう・・・と思ったら、Apache Spark自体がバージョンアップしていました。
Spark0.8.0になりますね。

なので、とりあえずどんな機能が追加されたかは実際クラスタ組む前に確認しておこう・・・
というので更新内容が何か確認してみます。

更新で大きいものは8点。

1. Monitoring UI and Metricsの追加

SparkのUIにJobダッシュボードとMetricsメニューが追加され、
実行中のジョブや、実行段階の情報が見えるようになったそうです。

その他にもジョブの実行パーセンタイル統計や、GC発生数といった性能情報も見えるようになった模様。
加えて、ジョブ実行あたりのディスクの使用量増加といった情報もわかるそうです。
尚、こういった性能情報や統計情報はJMXとGangliaのAPIで外部から取得することも可能な模様。
単にUIとして使うだけでなくて他の外部プロセスからも見れるというのはいいですね。

2. MLbaseを基にした機械学習ライブラリの追加

UC Berkeleyの機械学習ライブラリMLbaseを基にSpark向けに最適化した機械学習ライブラリ「MLlib」が追加されました。
現状サポートしているアルゴリズムは以下。
1. Support vector machines (SVMs)
2. Logistic regression
3. Several regularized variants of linear regression
4. Clustering algorithm (KMeans)
5. Alternating least squares collaborative filtering.
一般的な機械学習ライブラリという形では当然既にあるんですが、Sparkに最適化されたライブラリというのは有難いですね。

3. Python API改善

ストレージ層、メトリクス、RDDへの操作など、Python APIの拡充が行われているようです

4. Hadoop YARN support

スタンドアローンSparkJobをHaoop YARN上で実施するための口が追加されました。
また、Hadoop YARN supportが正式版となったそうです。

5. Job Scheduler改良

Job Schedulerの拡張/リファクタが行われ、より洗練されたアルゴリズムで動作するようになったそうです。
Fair Schedulerも導入され、複数ユーザ間で利用可能になりました。
結果、小さいジョブを優先して実施して全体のスループットを向上させたり、長いジョブは他のジョブと並行して実施する・・・
等の対応が行われているようです。

6. デプロイとバージョンごとのリンク付けの容易化

sbt等の依存性解決ツールでバージョンを指定するのみで実際に今使用しているHadoopのバージョンとリンクさせるよう整備が行われたそうです。

7. AWS EC2サポート追加

デプロイする際のAvailability zoneの追加や、EC2インスタンス
HVMやクラスタコンピュートインスタンスも選択できるようになったそうです。

8. ドキュメント改良

内部動作や機械学習ライブラリについても追記され、拡充されたそうです。


・・・と、こんな感じでした。
上記の中ではSpark用にカスタマイズされた機械学習ライブラリというのは大きいですね。
そもそも、Spark自体が実行速度/レスポンスという観点においてHadoopを上回り、
かつスループットHadoopに近い値を確保していてStorm、S4等のリアルタイム系のプロダクトを上回る位置づけになります。

かつ、軸足はバッチ処理のため、途中の状態同期もやりやすく適用可能な機械学習アルゴリズムも広いはず・・・
という期待もあり、どこまで使えるものになるかが楽しみですね。