『Prestoとは何か,Prestoで何ができるか』
本記事は移転しました。新サイトにリダイレクトします。
トレジャーデータはクラウドでデータマネージメントサービスを提供しています。
Hadoop Conference Japan 2014
以前に告知したHadoop Conference Japan 2014で,弊社Software Architectの古橋が発表しました。
テーマは,Facebookが公開した新しい分散処理基盤,Presto。実はFacebookが彼らの超大規模なデータセットに対してインタラクティブに結果を返せるようにと開発されたものです。開発が始まってまだ2年も経っておりませんが,今ではトレジャーデータを初めとして多くのハッカー達がコミッターとして参加する活発的なプロジェクトに成長しています。
PrestoはHiveやImpalaと同じ「SQL Query Engine」であり,特に数百GBを超える大規模データに対してもインタラクティブなレスポンスを(コンマ0秒以下,遅くても2,3秒)返すという点では Hive と異なり,Impala に近いものがあります。
発表資料
発表資料はこちらです:
Presto - Hadoop Conference Japan 2014
なぜPrestoを使うのか? バッチ処理の悩み
今までのHiveにおいては以下の様な問題を持っていました。
- ダッシュボードやBIなどのフロントエンドから直接HDFSからデータを取得して(インタラクティブに)可視化するのが難しかった。
- ↑ なぜならHiveはバッチ処理を目的としていたので数秒で結果を返すことができないから。
- ODBCとの接続性が不安定であった。
Prestoでは、このような問題を解決してくれます。
高速なクエリ実行と、BIツールとの接続
1つは大規模データセットに対してもインタラクティブなレスポンスを返すことでデータマートを立てなくても良くなったこと,さらにODBC/JDBCの接続性が良く,BIなどからも簡単に繋げるようになったことが挙げられます。これによってHiveは定時的に高負荷の集計を回すバッチエンジンとして,Prestoは高速レスポンスによってフロントエンドとインタラクティブに繋がるエンジンとして明確な役割分担を行えるようになりました。
複数のデータソースからの読み出し
さらにPrestoのすごいところは,HDFSに限らず他の複数データソース(HBase, Cassandra, MySQL, etc...)に対して一度に集計を実行することができるところにあります。
これは毎回のクエリごとにデータソースを切り替えるだけでなく,一回のクエリ内で,複数のデータソースからデータを参照できるという点で画期的でした。
各データソースに対して Connector プラグインを作成してしまえば,他のデータソースにも柔軟に対応してくれます。
PrestoとHiveの違いとは?
Hiveは実行されると数段のMapReduceジョブへと変換されますが,ImparaやPrestoは個々のタスクが並列で動くような別の計算モデルを採用しています。また,中間データをメモリに持つことでタスク間のデータのやりとりを高速にしています。
バッチとアドホックのギャップを埋める
Hiveのような大規模データ分析基盤とフロントエンドのギャップを解消するために,「データマート」と呼ばれる中間データベースを間に挟むことに寄ってこの問題を解決する方法が一般的でした。
しかしながら,データマートを立てることはそこへの運用保守という新しい業務が産まれかつ適切な設計を行うにはスキルが必要で,このようなハードルを立てることに抵抗感を持った方々も多数おられたと思います。
Treasure DataはPrestoの開発にも大きく貢献しており、バッチとアドホックのギャップを解消していきます。
以前紹介した記事でこのギャップについて以下のスライドとともに説明しております。ご参考下さい。
トレジャーデータに関するお問い合わせは support@treasure-data.com まで。