Presto は、オープンソースの分散 SQL クエリエンジンで、低レイテンシーでアドホックなデータ分析用に最適化されています。ANSI SQL 標準をサポートしており、複雑なクエリ、集計、結合、ウィンドウ関数を実行できます。Presto を使用して、Hadoop Distributed File System (HDFS) や Amazon S3 など、複数のデータソースのデータを処理できます。Presto には 2 つのコミュニティプロジェクトがあります – PrestoDB と PrestoSQL です。Amazon EMR では、これらのプロジェクトの両方がサポートされています。PrestoDB の詳細については、こちらをご覧ください。
マネージド型 Presto クラスターは、AWS マネジメントコンソール、AWS CLI、または Amazon EMR API からすばやく簡単に作成できます。また、Amazon S3 の高速接続、Amazon EC2 スポットインスタンスとの統合、各種 Amazon EC2 インスタンス (メモリに最適化したインスタンスなど) からの選択、サイズ変更コマンドなどの Amazon EMR の追加機能を利用して、簡単にクラスターのインスタンスを追加または削除できます。
特徴と利点
インタラクティブなクエリパフォーマンス
Presto では、SQL セマンティクスをサポートするように設計された演算子に対応したカスタムクエリ実行エンジンを使用します。Hive/MapReduce とは異なり、Presto はクエリをメモリで実行し、ネットワークにかけてステージ間でパイプライン化するため、不要な I/O を避けることができます。このパイプライン化された実行モデルでは複数のステージが平行して実行され、次のステージが利用可能になるとデータをストリーミングします。
使いやすさ
Presto を実行する Amazon EMR クラスターは数分で起動できます。ノードのプロビジョニング、クラスターのセットアップ、設定、クラスターのチューニングなど、わずらわしい作業は不要です。こうした作業は Amazon EMR 側で実行されるため、お客様は分析に専念できます。また、Airpal などのツールを使用することもできます。Airpal は、Airbnb によりオープンソースで開発されたウェブベースのクエリ実行ツールです。Airpal のユーザーインターフェイスではデータ調査やアドホックな分析が簡素化されます。また、構文強調表示、CSV への結果のエクスポート、後で利用するためのクエリの保存、スキーマを可視化するためのテーブルの確認などの機能がサポートされています。
Amazon EMR 機能セットとの統合
Amazon S3 のデータに直接アクセスするインタラクティブなクエリの実行、Amazon EC2 スポットインスタンスキャパシティーを使用したコスト削減、EMR Managed Scaling を使用したキャパシティーの動的な追加と削除、ワークロードに応じて長期間稼働するクラスターや一時的なクラスターの起動がそれぞれ可能です。また、Hadoop エコシステムの別のアプリケーションをクラスターに追加することもできます。
ANSI SQL のサポート
Presto では ANSI SQL 標準をサポートしています。これにより、データアナリストや開発者は、大規模な構造化データと非構造化データの両方に対してクエリを簡単に実行できます。現段階で、Presto では、複雑なクエリ、集計、結合、ウィンドウ関数など、さまざまな SQL 機能をサポートしています。
導入事例
Netflix では、ビッグデータ向けの、ANSI-SQL に準拠したインタラクティブなクエリエンジンとして Presto を選択しました。Presto はオープンソースで、拡張性に優れており、Netflix のビッグデータウェアハウス環境の基盤である Hive Metastore や Amazon S3 と連携できます。Netflix では、永続的な Amazon EMR クラスターで Presto を実行し、最大 25 PB の Amazon S3 データストア全体でクエリを迅速かつ柔軟に実行しています。Netflix は Presto に積極的に貢献しており、Amazon EMR を使用して、Presto の独自のビルドを Amazon EMR クラスターで実行する柔軟性を実現しています。平均して、Netflix では Presto クラスターで 1 日あたり最大 3,500 のクエリを実行しています。
Jampp は、高度な広告リターゲティング技術を使用してターゲットのユーザーをアプリケーションに誘導するモバイルアプリケーションマーケティングプラットフォームです。Jampp では、独自のコンバージョンベースのリアルタイム入札 (RTB) エンジンを介し、モバイルメディアインベントリを購入することでこれを実現しています。このエンジンでは、18 の RTB エクスチェンジと 150 を超えるモバイル広告ネットワークでインベントリに動的に入札します。Jampp は Amazon EMR で実行されている Presto を活用して、アドバンストアドホックログ分析、複数のソースのデータ結合、複雑なリターゲティングセグメントの計算を行います。Jampp のユーザーベースが 600% 増加したため、複雑な分析クエリの需要も増加しました。Jampp は複雑なマルチコア Python アプリケーションを MySQL で実行するのをやめ、Presto に移行しました。結果的に、パフォーマンスが 12 倍になりました。現在、Jampp では Amazon EMR の Presto を使用して、1 日あたり 40 TB のデータを処理しています。
Cogo Labs はスタートアップインキュベーターとして、投資対象の企業や内部チームが使用するマーケティング分析やビジネスインテリジェンス用のプラットフォームを運用しています。急速なイノベーションに対応する OLAP 環境をサポートするために、SQL を標準としてデータの操作を行うことにしました。Cogo Labs は、リアルタイムのクエリパフォーマンス、ANSI-SQL のサポート、Amazon S3 から直接データを処理できることを理由に Presto を選択しました。Amazon EMR で実行される Presto により、100 人以上のデベロッパーとアナリストが、Amazon S3 に保存された 500 TB を超えるデータに対して、データ調査、アドホック分析、レポート作成のための SQL クエリを実行できます。Cogo Labs では、一時的なクラスターと永続的なクラスターを組み合わせて使用しています。また、Amazon EMR とスポットインスタンスの連携を利用してコストを削減しています。
OpenSpan はオートメーションとインテリジェンスソリューションを提供し、ユーザー、プロセス、技術をつなげて、従業員の生産性に関する詳細情報を取得し、従業員と顧客のやり取りを簡素化します。OpenSpan では、HBase から、Amazon S3 にデータを保存する Amazon EMR の Presto に移行しました。OpenSpan では、SQL インターフェイスと、Amazon S3 からリアルタイムで直接データにクエリを実行できる点を理由に Presto を選択しました。Presto により、膨大な量のデータをすばやく検索し、新しいデータ製品に対しても迅速に繰り返し処理を実行できます。OpenSpan では Parquet ファイル形式を使用しています。Presto への接続には PrestogreSQL を使用しています。OpenSpan では、顧客から日々受け取るギガバイト単位のデータを優れた費用対効果で処理するために、Amazon EMR と Amazon S3 を選択しました。
Kanmu は、日本の金融サービス業界のスタートアップ企業です。消費者のクレジットカード利用状況に基づいて、カードに関連するサービスを提供しています。Kanmu では、Presto の反復的な予備解析を Amazon S3 において優れたインタラクティブスピードとパフォーマンスで実行できる点と、大きなデータセットに対してクエリを実行できるスケーラビリティを理由として、Hive から Amazon EMR の Presto に移行しました。Kanmu では Fluentd-plugin-s3 を使用してデータを Amazon S3 にプッシュします。これは、データを保存し、shib (SQL クエリを実行するための node.js ベースのウェブクライアント) を使用するための、最適化された行列 (ORC) 形式です。
Amazon EMR の料金の詳細