Facebook、分散SQLエンジン「Presto」公開。大規模データをMapReduce/Hiveの10倍効率よく処理すると

2013年11月8日

Facebookは、数ペタバイト級の大規模データに対しても、対話的にアドホックな問い合わせを可能にする分散SQLエンジン「Presto」を、オープンソースで公開しました。

(2) Presto: Interacting with petabytes of data at Facebook

PrestoはFacebook社内で大規模データの分析のために開発され、すでに同社社内使われているもの。

FacebookはPrestoを開発した背景として、大量のデータをHadoop/HDFSベースで保存したものの、バッチ指向のMapReduceではなく、リアルタイム性に優れた処理が必要になったためだと、次のように説明しています。

Facebook’s warehouse data is stored in a few large Hadoop/HDFS-based clusters. Hadoop MapReduce [2] and Hive are designed for large-scale, reliable computation, and are optimized for overall system throughput. But as our warehouse grew to petabyte scale and our needs evolved, it became clear that we needed an interactive system optimized for low query latency.

Facebookのデータウェアハウスは、いくつかの大規模なHadoop/HDFSベースのクラスタに保存されている。Hadoop MapReduceとHiveは大規模で信頼性の高い処理のために設計され、システム全体のスループットに最適化されている。しかし、そのデータウェアハウスがペタバイト級に大きくなるにつれ、私たちのニーズも変わってきた。それは即時性に最適化された対話的なシステムになっていった。

2012年頃から使えるソフトウェアを探したが見つからなかったため、自社でPrestoを開発する決断をしたとのことです。そしてPrestoは、MapReduceでSQLを実行する仕組みを持つHiveよりも、CPUの効率やレイテンシの面で10倍優れていると。

Presto is 10x better than Hive/MapReduce in terms of CPU efficiency and latency for most queries at Facebook.

Prestoはほとんどの社内のクエリにおいて、CPUの効率とレイテンシに関してHive/MapReduceよりも10倍は優れている。

Hive/MapReduceとは異なるアーキテクチャ

Prestoは、アドホックなクエリの結果をインタラクティブに得ることに最適化された分散SQLエンジンです。ANSI SQLに準拠し、ジョイン、アウタージョイン、サブクエリ、一般的な集計関数やカウントなどに対応。

Facebookは以前、SQLに似たHiveQLをMapReduce上で実行し、大規模分析を行うオープンソースの「Hive」(現在はApache Hive)を開発していますが、PrestoのアーキテクチャはMapReduce/Hiveとは異なっています。

クライアントからSQL文がコーディネイター(下図の右上)に送られると、そこでパース、アナライズ、実行プランが立てられます。スケジューラが実行プランを実行パイプラインへと組み上げ、データに近いノードに対してジョブを割り当て、進捗を監視。クライアントが結果を引き出してきます。

すべての処理は各サーバのインメモリで行われており、Presto自体はJavaで開発されているとのこと。

また開発初期に、データがさまざまなデータストア、例えばHDFSやHBase、FacebookのNews Feed Backendなどに分散していたためPrestoは当初からデータストアを抽象化するプラガブルな構造を採用したと説明されています。

あわせて読みたい

RDB データベース Facebook MapReduce SQL




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本