夢とガラクタの集積場

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

Apache Spark0.8.1の新機能

こんにちは。

年明けサボっていましたが、まずはライトな更新から。
去年の年末にApache Sparkが0.8.1にバージョンアップしていたので
バージョンアップ内容を備忘録としてまとめておきます。

・・・内容的にはさっさかバージョンアップした方がいいものも混じっているかもしれませんので。

1.バージョンアップ内容

  • YARN 2.2以降への対応
    • SparkはMesosかYARNを用いてリソースを確保していますが、YARNの新しいバージョンへも対応したようです。
      • Spark0.8.0では2.0.X系までへの対応、Spark0.8.1ではYARN 2.2.X系以降へも対応となるようですね。
  • StandaloneClusterの冗長化機能追加
    • Sparkは基本的にMesosやYARNを用いてリソースの確保を行いますが、簡易に実行するためにSpark単体でもクラスタ管理が可能になっています。
      • Spark単体でのクラスタ管理モードを「StandaloneCluster」と呼ぶようです。(実はこの機能初めて知りました)
    • Spark単体でのクラスタ管理を行う場合、そのMasterプロセスがSPOFとなっていたのですが、Masterプロセスを複数起動してZooKeeperでCoordination可能になったとのこと。
      • Spark Streaming等の常時流し続けるジョブを実行する際にはありがたい機能ですね。
  • パフォーマンス改善
    • データのshuffleの際に使用するhashtableの性能改善
    • ジョブ情報のエンコーディング方式改善。HDFS、S3、HBaseなどから大量ブロックを読み込む場合のレイテンシが改善
    • データのshuffle時に生成されるファイル数削減設定が可能となった。(デフォルトはoff、Spark0.9.0以降はデフォルトとなる予定)
    • ブロードキャスト方式の改善(大容量オブジェクトをクラスタ内で分散させる場合の性能が改善)
    • 結果が大容量となる場合の方式改善(Akkaバッファサイズをチューニングしなくても受信可能となった)
  • 機械学習ライブラリの改善
    • 最小二乗行列分解に新ライブラリを追加
  • Python対応部の改善
    • Sparkの設定をPythonから直接設定可能になった
    • Pythonからsortオペレーションを実行可能になった
    • アキュムレータにaddメソッド追加
  • 新オペレータの追加とユーザビリティ改善
    • local://という記述でSpark Workerのローカルファイルも指定可能になった
    • UIに表示されるステータスに「result fetching」を追加
    • Spark Streamingに「transformWith, leftInnerJoin, rightOuterJoin」のオペレータ追加
      • 既にSpark Streamingは本体に内蔵しているノリのようですね
    • 「repartition」のオペレータ追加
    • StandaloneCluster、MesosClusterにおいて実行ユーザを切り替えることが可能に

2.BugFix内容

  • Kafka<>Spark Streamingの通信においてデータが稀に消滅するケースがあったことに対する対応
  • タスクが失敗した時にスケジューラがハングすることがある問題に対応
  • Spark Streamingのサンプル実行時にログが出力されてしまうビルド時の問題に対応
  • UIにおいて特定のカラムを用いた際のソート機能に問題があったため対応

StandaloneClusterというモードは初めて知りましたね・・・
基本的には機能が追加されるわけではなく、対応インタフェースのバージョン拡大や性能改善、
ユーザビリティの改善といったマイナーバージョンアップに位置づけられる内容のようではあります。

あとは、「local://」記述はわかりやすいのでその点は乗り換えるのもありかもしれませんね。