Sparkの研究

Apache Sparkは、ビッグデータ分析に焦点を当てたAMPLabのUCバークレーにおける研究プロジェクトとして始まりました。

私たちの目標は、MapReduceの自動フォールトトレランスを維持しながら、より幅広いクラスのアプリケーションをサポートするプログラミングモデルを設計することでした。特に、MapReduceは、複数の並列操作間で低レイテンシーのデータ共有を必要とするマルチパスアプリケーションには非効率的です。これらのアプリケーションは分析で非常に一般的であり、以下が含まれます。

  • PageRankのような多くの機械学習アルゴリズムやグラフアルゴリズムを含む反復アルゴリズム
  • ユーザーがクラスター全体でRAMにデータをロードし、繰り返しクエリを実行したいインタラクティブなデータマイニング
  • 時間経過に伴う集計状態を維持するストリーミングアプリケーション

従来のMapReduceおよびDAGエンジンは、非循環データフローに基づいているため、これらのアプリケーションには最適ではありません。アプリケーションは、それぞれが安定したストレージ(分散ファイルシステムなど)からデータを読み取り、安定したストレージに書き戻す一連の個別のジョブとして実行する必要があります。各ステップでデータをロードし、レプリケートされたストレージに書き戻すには、かなりのコストがかかります。

Sparkは、これらのアプリケーションを効率的にサポートするために、Resilient Distributed Datasets (RDD)と呼ばれる抽象化を提供します。RDDは、レプリケーションを必要とせずに、クエリ間でメモリに保存できます。代わりに、リネージを使用して、障害時に失われたデータを再構築します。各RDDは、自分自身を再構築するために、他のデータセットから(mapjoingroupByなどの変換によって)どのように構築されたかを記憶します。RDDにより、Sparkはマルチパス分析で既存のモデルよりも最大100倍のパフォーマンスを発揮できます。RDDが、インタラクティブなデータマイニングだけでなく、幅広い反復アルゴリズムと非常に効率的なSQLエンジン(Shark)をサポートできることを示しました。

Sparkの背後にある研究の詳細については、次の論文をご覧ください。