夢とガラクタの集積場

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

Spark Summit 2013の内容一覧

こんにちは。

思いっきり見逃していた話なのですが、2013/12にSpark Summit 2013が開催されていました。

幸い、資料はほとんど公開されているようなので、
内容を確認してみようと思うのですが、まずは概要を確認しておこう、ということで内容一覧と概要をまとめてみました。
尚、概要については概要ページが用意されている発表についてはそれを訳し、
存在しないものについては資料の中身をざっと確認して概要を書いています。

先進的な企業に加えて、Yahooのような大きなHadoopクラスタを有する企業でもSparkを取り込み、
既存のデータ解析基盤と統合させようとする動きが出ているのが面白いですね。

加えて、YARN/Mesosの存在によってSparkの導入は「既存機能の置き換え」ではなく、
「既存機能との統合」という流れで発生しているのも興味深いところです。

というわけで、各セッションについて説明します。

Keynotes #1

  1. The State of Spark, and Where We’re Going Next
    • ここ3年ほどでSparkは研究プロジェクトから並列コンピューティングのOSSの中で最も活発なOSSの一つになるまで成長した。
    • この発表ではこれまでの発展の歴史とコントリビュータについて振り返るとともに、今後ビッグデータが真にアクセサブルで高速になるために残っている課題について述べる。
    • その上で、DatabricksがSparkを用いてどのようにその課題に対してアプローチするかを述べる。
  2. Turning Data into Value
    • 世の中にあふれているデータを用いて価値を生み出すという試みが広まり、現在はデータのゴールドラッシュともいえる状態になっている。
    • データは利用できて初めて価値を持つが、データを利用するために必要な要素について述べ、Sparkがそれらにどうアプローチしているかを説明する。
  3. Big Data Research in the AMPLab
    • AMPLabで行われているビッグデータ研究について現状我々がどのような場所にいるかとBerkeleyの保持するビッグデータスタックについて述べる。
    • その上で、ビッグデータの研究に必要となる3要素と、それを活用して生み出してきたプロダクトについて説明する。

Keynotes #2

  1. Hadoop and Spark Join Forces in Yahoo
    • 現在HadoopはYahooでユーザ/広告業者に対して個別化された体験を提供するためのベースを担っている。
    • だが、新たなYahooのビジネスニーズに対応するためにSparkをHadoopとSparkをシームレスに統合し、ビッグデータプラットフォームを拡大する必要がある。
    • この発表ではYahooがSparkをどんなユースケースに使用するか、とSparkを採用した戦略について説明する。
  2. Integration of Spark/Shark into the Yahoo! Data and Analytics Platform
    • この発表ではYahooのビジネスインテリジェンス/データ解析の評価方法と、Sparkエコシステムを採用したチャレンジについて説明する。
    • 併せて、現在と今後のSpark/Sharkのユースケースだけでなく、現在の実装とアーキテクチャについても説明する。
  3. Spark in the Hadoop Ecosystem
    • この発表ではSparkが現在のHadoopエコシステムにどう取り込まれてきているかという現状と、今後期待される発展について説明する。

Track A Applications, Part 1

  1. Mapping and manipulating the brain at scale
    • 動物の振る舞いは神経系において複数の領域に存在する多数のニューロン同士の連携によって決められる。
    • 最近の神経系を画像化する新技術は神経系がどのように作用するか、という解析をかつてない規模で可能にしている。
    • しかし、このデータ量は既存の技術で実行可能なデータ量を上回っている。時間あたりテラバイト単位の規模でかつ複雑、高次元であるという状況だが、私たちはこれを時間的/空間的に理解したい。
    • Sparkは予備的、かつインタラクティブな解析をビッグデータに対して高速で可能にするためユースケースに合致している。現状の取組について説明する。
    • なお、現在私たちは本ユースケースに対してSpark Streamingを用いて対応している。
  2. Beyond Word Count ; Productionalizing Spark Streaming
    • Sharethroughにおいて、私たちはユーザの製品機能要望に対応するためにSparkを使用している。
    • 現在私たちは複数のStreamingジョブ間の一貫性を確保し、利用するための基盤を構築中である。
    • こういった取り組みを行うことにより、Streaming型のジョブを開発する速度は確実に向上している。
    • この発表ではStreaming型のジョブを開発する際に遭遇した3つの課題とそれを克服するために取った施策について説明する。
    • 課題は「耐障害性確保」「関数型言語を用いた抽象化」「これらのジョブのテスト方法」
  3. Sharing is Caring: Enabling Data Science Teams with Laburnum
    • SparkのユーザフレンドリーなAPIによって高速な開発/高い生産性を叩きだすことが可能になっている。
    • MesosやYARNといったリソースマネージャが個々のタスクのリソースを分離して実行させている。Tachyonはユーザ間のメモリファイル共有をサポートしているが、現状は私たちは分離したジョブとして記述している。
    • この発表では複数のアプリケーション間でコードとデータの共有を行うためにQuantifindで使用されているフレームワークである「Laburnum」について説明する。
    • Laburnumを使用することで、私たちはユーザに対してSparkについて学習することなく統合されたWebAPIを用いたビッグデータに対するアドホック解析を提供している。
  4. A Full-Featured Enterprise Big Data Analytics Solution, Powered By Spark
    • この発表ではAdataoがSparkを利用してどのようにフル機能を備えたビジネス解析ソリューションを提供しているかを説明する。
    • 機能としてはWebベースのレポート/可視化/出力といった基本的なものから大規模データに対するインタラクティブかつリアルタイムなデータマイニング機械学習といった先進的な機能まで含まれる。
    • これらの機能はこれまでは何時間という単位で時間が必要であったが、現在は秒単位の時間で提供することが可能になっている。
    • Spark/Shark/HDFSといったバックエンドとRやPythonというフロントエンドAPIを用いて私たちがどのようにこれを実現したかについて説明する。
    • また、併せてこの解析機能のユースケースからどのように機能の開発/デプロイをすればいいか私たちが学んだことについても議論したい。

Track A Applications, Part 2

  1. Real-Time Analytical Processing (RTAP) Using the Spark Stack
    • HadoopMapReduceビッグデータ活用のメインストリームに据えてきたが、現在は求められる機能/モデルが広がった新たなビッグデータパラダイムが生じ、MapReduceを越えた基盤が求められる。
    • 具体的には、ビッグデータからリアルタイムな洞察を得るために反復的かつ対話的にデータを発見する機能が求められている。
    • この発表ではリアルタイムデータ解析処理を行っているうちに抽出した、下記のような求められる性質について私たちの取り組みを説明する。
      1. データを半ストリーミング/オンライン方式で処理
      2. 現在のデータと過去のデータを統合し、インタラクティブに解析
      3. メモリベースの計算
  2. Using Spark/Shark for Fast-cycle Analysis on Diverse Data
    • ClearStory Dataにおいて、私たちは多種多様なデータを素早いサイクルで解析するのに最適化された解析スタックを保持している。
    • このセッションではSpark/Sharkを用いることによって私たちがどうこのような解析が可能になったか、何故Sparkを採用したかについて説明する。
    • 特に、SparkをはじめとしたAmpLabのプロダクトを使うことでどのように私たちのデータ解析がレバレッジされたかを重点的に説明しようと思う。
  3. Yahoo Audience Expansion: Migration from Hadoop Streaming to Spark
    • このセッションではHadoop StreamingからSparkへのマイグレーションの際の注意点について説明する。
    • マイグレーションによってユーザ側は少なくとも2倍早く更新を続ける基盤を手にし、かつ私たちはコードの変更を行うことなくこれを達成する手法を確立した。

Track A Applications, Part 3

  1. Towards Distributed Reinforcement Learning for Digital Marketing with Spark
    • DigitalMarketingにおける様々な問題はマルコフ決定過程としてモデル化し、期待されるゲインを最大化することを計算する動的プログラミングによって解決することができる。
    • これらの反復実行アルゴリズムアルゴリズムの最適化でMapのサイクルを減らすことで大きく改善可能だが、ここでHadoopとSparkを用いた異なるサイズのクラスタを構築し、結果の比較を行う。
  2. One platform for all: real-time, near-real-time, and offline video analytics on Spark
    • Convivaにおいては、ユーザに対して高品質な映像体験を提供するために多様な映像提供パイプラインを制御する必要がある。
    • 私たちはこの問題に対応するためにSparkを用いたリアルタイム制御エンジンを開発した。
    • このセッションにおいてはインターネット上の映像トラフィックの制御をSparkを用いたリアルタイム回帰アルゴリズムによっていかに決め細やかにカバーしているかを説明する。
  3. Collective Intelligence for Data Center Operations Management
    • 企業のデータセンターにおいて仮想化は有益な半面、誰がどのリソースにどう接続して使っているかが動的になるため、チャレンジングでもある。
    • CloudPhysicsはこれらの課題に対応し、管理が可能なSaaSを開発している。
    • 私たちは数百のユーザを抱えており、1日100bilionのデータを扱い、10万以上の仮想マシン/物理マシンを管理している。
    • ユーザを跨いだ解析状況を提供するツールとしてSpark/Spark Streamingが使用されている。これらのツールによってパターンを抽出し、傾向や異常値の判定からくるユーザへの通知が可能になっている。
    • この発表ではSparkから収集した集計統計結果からくるベストプラクティスなチューニング、およびアーキテクチャについて説明する。
  4. Unveiling the TupleJump Platform
    • この発表では私たちはSparkとCassandraを用いて構築したWebベースのデータエンジニアリングIDEであるTuplejumpプラットフォームについて説明する。
    • その中でCassandraをベースとしたファイルシステムであるSnackFSやビッグデータの可視化に対応したOLAPCubeであるUbercubeを開発した。このプロダクトについて説明する。

Track B Deployment

  1. Making Spark Fly: Building elastic and highly available Spark clusters with Amazon Elastic MapReduce
    • Amazonで私たちは拡張性と可用性の高いプラットフォームを構築するよう取り組んでいる。
    • このセッションではAmazon Elastic MapReduceとSparkの統合と、Sparkにより大きな拡張性と可用性を持たせるために行った改修について説明する。
  2. One platform for all: real-time, near-real-time, and offline video analytics on Spark
    • SIMR ― Spark Inside MapReduce ―はSparkジョブをHadoop MapReduceクラスタ上で動作させることを可能にしている。
    • SIMRを用いることによりSpark/Scalaの進歩を待つことなく新たな機能が搭載可能になっている。
    • 尚、SIMRはHadoopMapReduceのJarの中にSparkとScalaを含めたものであり、Mapジョブの中でSparkジョブが展開可能になっている。更にインタラクティブなアクセスを可能にするShellモードも搭載している。
  3. Flint: Making Sparks (and Sharks!)
    • FlintはAWS上で弾力性のあるクラスタ管理を行うためのソフトウェアツールセットである。
    • Flintのゴールとしてはユーザが便利かつ簡単にパッケージをデプロイして管理することが可能になることで、特にSpark/Sharkのクラスタ構築をシンプルにし、企業用のFirewallを通して使用可能なように設計されている。
    • この発表ではFlintがAWS上でどう動いているかとその構成要素について説明する。
  4. Spark Integration Into an Enterprise BigData Stack: Successes & Challenges
    • OSSまたは商用ソフトウェアを用いてデータ解析用のスタックを構築することは非常に複雑な作業です。
    • お互いの複雑な依存性は独立しているはずの開発チーム同士に連携を強要するケースもある。これは開発のフローを構築する上で非常に困難な話となる。
    • このように、データ解析用スタックに上手く開発したアプリケーションを統合することは企業のデータ戦略にも大きくかかわってくる。
    • このセッションではこれらの課題に対する100%OSSの基盤を用いた現実的な答えを提供する。実体験を元にHadoopクラスタの上にSpark/Sharkをデプロイする際の対処について述べる。
  5. Packaging Spark for Fedora
    • OSSプロジェクトにおいて、高品質なディストリビューションが提供されることはユーザにとってインストール/アップデート/依存性の解決を容易にし、非常に重要である。
    • 私たちは下流のパッケージャが詳細な部分に焦点を当てるのではなく、むしろ上流のパッケージャに対して拡張や修正の情報を提供することで全体としての品質向上につながる流れを作っている。
    • この発表ではこのモデルの利点をSparkのFedora用パッケージ構築を実例として説明する。
  6. Spark on Elastic Mesos, for Enterprise use cases
    • Elastic Mesosは認証情報を入力するだけでAWS上に仮想マシン代以外のコストをかけずにSparkを実行可能なMesosクラスタをすぐ起動できるサービスである。
    • このセッションで私たちはElastic Mesosを起動し、そこにSparkをデプロイするデモを見せる。
    • あわせて、R, SAS, SPSS, SAPのようなPMMLベースの解析&予測を可能にするサンプルアプリケーションを見せる。これは金融業界においてポピュラーな処理であり、Sparkがこの領域に適用可能であることを示す。

Track B Sched & Perf

  1. Understanding the Performance of Spark Applications
    • このセッションではSparkジョブのパフォーマンス診断について説明する。
    • まずはじめに、SparkジョブがRDDで表現される高レベルなコードからどうやって低レベルなタスクに分割されて配分されるかを説明する。
    • その上で、Sparkジョブのボトルネックを解析するために導入された診断機能の利用方法について説明する。
    • そこから導かれるデータの偏り/GC/高コストなシャッフルといった遅延の原因を説明した上で、どうやったら高パフォーマンスなジョブ構成にマイグレーション可能かの説明を行う。
  2. Next-Generation Spark Scheduling with Sparrow
    • 現状のSparkスケジューラはスケジューリング決定を行うために中央のスケジューラに依存する構成になっている。
    • だが、Sparkが大規模なクラスタにデプロイされ、低遅延なクエリを大量に実行する場合、この中央集権の構成がボトルネックとなる。
    • このセッションでは現状のSparkスケジューラの性能限界について説明した後で、新しい分散型スケジューラであるSparrowについて説明する。Sparrowはランダムで選択されたジョブにおいて現状のスケジューラより高いスループットを誇る上、障害に対しても10ms単位の遅延で対応可能となっている。
  3. Resource management and Spark as a first class data processing framework on Hadoop
    • MapReduceやPig、Impala、Sparkを並列して走らせ、各々のリソースを動的に配分したいか?CDHではYARNを導入することでこれらのタスク間のリソースを中央集権的に動的調整することが可能となった。
    • リソースの静的分散パラダイムを越えるとユーザは「ワークロード」でリソース配分を考えることができるようになる。
    • 結果、クラスタの管理者は処理フレームワークではなく、組織内の各サブチームに対してリソースを割り振ることができるようになる。CDHはSparkを取り込むことでリソース管理の展望を更に広げている。
    • このセッションでは様々なタスクが混合する中でのリソース管理について説明する。

Track B Spark Related Projets

  1. Catalyst: A Query Optimization Framework for Spark and Shark
    • クエリオプティマイザは開発者の生産性とリソースの有効活用度の両方を大きく向上させる。
    • 優れたクエリオプティマイザはクエリの中で必要となるタスクを解析し、フィルタリング→データ解析という効率的な順序で実行するよう最適化を行うことができる。
    • 優れた最適化は開発者をより開発する機能に集中させることができるが、現状のオプティマイザは非常に単純な最適化を実行することができるにすぎない。
    • 加えて、過度な最適化は更なる改造を阻害するという要素も持つ。
    • そのため、私たちはこのセッションでCatalystというScalaの言語機能を利用した「最適化フレームワーク」について説明する。
    • Catalystを使うことで開発者は数行のコードで最適化を行える上に、後付けの拡張も容易になっている。
  2. Deep Dive into BlinkDB: Querying Petabytes of Data in Seconds using Sampling
    • 収集し、保存されるデータの容量は指数関数的に増えつつあるが、分析者は更なる性能を求めているのが現状である。
    • このセッションではBlinkDBというクエリに関係なく常にベースとなるサイズのデータセットを保持し、リアルタイムで処理することを保証するという新しいアプローチをとったDBを説明する。
    • BlinkDBの存在により、ユーザは処理時間と解析するデータ量のトレードオフをどこで調整するかを自由に選択することができるようになる。
    • 課題は「ベースとなるデータセット」へのクエリ実行でいかに有意ある結果を提供するか、という話になるが、そこに対しては最近のクエリ処理の進歩と機械学習によるアプローチを行い、対応している。
  3. Spark Query Service (Job Server) at Ooyala
    • このセッションで私たちはインタラクティブな分析やOLAPアプリケーションを提供するためにCassandraとSparkを用いて実現した革新的な方法について共有したい。
    • 私たちはSpark Job ServerをREST APIを用いて実行できるように用意し、下記のような機能を実現している。このSpark Job Serverは開発者の生産性を向上させる手助けとなると考えている。
      1. ある長時間保持されるRDDに対してインタラクティブな分析を可能にする
      2. Standalone Cluster / Mesos Clusterの両方に対してジョブの投入を可能にする
      3. 実行されたジョブの状態と結果のトレースを可能にする
      4. ジョブ管理をプログラミングできるAPIを提供する
      5. 問題のあるジョブを中断させる
  4. StratioDeep: an integration layer between Spark and Cassandra
    • このセッションで私たちはStratioDeepというSparkとCassandraを統合するためのレイヤについて説明する。
    • Cassandraは単一障害点を持たず、データもカラム単位でアクセスが可能であるが、キーで検索されるという性質を有するため、実行するクエリに対応する形でスキーマを設計する必要が出てくる。
    • SparkとCassandraを統合することにより、両プロダクトの長所を組み合わせたシステムが実現可能となる。
    • CQLにSparkの機能を組み合わせて拡張することにより、私たちは両プロダクトの統合によってラムダアーキテクチャを実現するシステムを構築することができている。

以後はSparkのExerciseになります。
1日がセッショントラックになり、2日目がまるまるExerciseになるというのも中々面白い構成ではありますね。

こんな形でとりあえずどんなことが話されたのか、の概要についてまとめてみましたが、
実際のユースケースや既存システムとの統合など興味深い内容について講演されています。

とりあえず、いくつまで確認できるかは微妙ですが、面白そうなトラックからおいおい中身を確認してここにまとめていこうと思います。