Presto Hadoopとは?

Prestoはオープンソースの分散型SQLクエリエンジンで、Hadoop分散ファイルシステム(HDFS)から従来のリレーショナルデータベース、CassandraなどのNoSQLデータソースまで、さまざまなデータソース上に配置できます。データソースに対して、同時に複数のインタラクティブなクエリを実行することが可能です。

Prestoは2012年の秋にFacebookがHiveに代わるものとして開発しました。同社は今もこのソフトウェアを使用して、ユーザー10億人分以上のデータが集められた300ペタバイトのHadoopクラスタでクエリを実行しています。また、NetflixDropbox、Airbnbといった著名なテクノロジー企業もPrestoのユーザーです。したがって、強力な開発者コミュニティによって支えられています。

Teradata社は、Prestoにオープンソースコードを供給する開発者20名以上からなる専任のチームを擁し、企業でPrestoを普及させるための数年にわたる取り組みを支援しています。しかし、ドキュメンテーションが限られているうえ、開発者向けであるため、Prestoの構成を設定して保守するにはエンジニアリングリソースが必要になってきます。

Prestoを選ぶ理由

インタラクティブなクエリ

Prestoを構築した開発者らは、インタラクティブに実行できるクエリ機能を重視しました。そうすることで、クエリが返ってくるまでの時間が短くなります。したがってPrestoは、Lookerなどのビジネスインテリジェンスツールのバックエンドに最適で、その理由はBIツールのエンジンが結果を非常に速く返せるからです。

統合

Prestoは数多くのサードーパーティによるデータソースと統合しており、Kafka、Redis、H3、S3、Hadoop、NoSQL、MySQL、Postgresなどと接続が可能です。

標準SQL

Prestoは各種データソースにクエリを実行する際、標準のANSI SQLを使用します。一方、Hiveなど他のSQLエンジンはANSI規格に準じていません(HiveはHiveQLという、SQLに似たクエリ言語を使用します)。

Prestoが実際に役立つ事例

大規模なデータセットに対するインタラクティブな一度だけのクエリ

ほとんど結合する必要のない非正規化データセットでは、Prestoのクエリの速さはインタラクティブ処理に近くなり、結果は数分や数時間ではなく、数秒から数分で返ってきます。その主な理由は、クエリが完全にメモリ内で実行されるというPresto特有のアーキテクチャにあります(他のSQLエンジンはMapReduceを使用して中間のステップをディスクに書き込みます)。

異種データソースを持つ組織

すべてのデータを一元化してひとつの場所に保存できない企業がPrestoのデータフェデレーション機能を使用すれば、統一されたクエリレイヤーを作成してさまざまなデータソースのデータを混在させることができます。

スタースキーマを持つ組織

Prestoはインメモリアーキテクチャであることから、ファクトテーブル全体で極端に大きなクエリを実行すると、コンピューティングエンジンの負荷が大きくなりがちです。ファクトテーブルとディメンションテーブル間のスタースキーマ内で結合を低コストで実行できるPrestoは、格好の選択肢となります。​​​​​​​

料金に関する考慮事項​​​​​​​

Prestoはオープンソースであるため、ソフトウェアは無料でダウンロードすることができます。ただし、ソフトウェアのデプロイやメンテナンス、オンプレミスでデプロイした場合のハードウェア管理にはエンジニアリングリソースが必要なため、総所有コストは高くなります。​​​​​​​また、サーバーの管理とデプロイの費用はさまざまです。

Prestoのアーキテクチャ

Prestoのアーキテクチャは、どちらかというとHiveなどのSQLエンジンよりも従来の分析MPPデータベースに似ています。というのも、Prestoの処理はすべてメモリ内で行われ、MapReduceを使用しません。つまり、MapReduceのように中間の処理をディスクに書き込むのではなく、コンピューティングのステップを完全にメモリ内で実行し、中間結果をネットワーク全体にプッシュします。このアーキテクチャによって、クエリの速度は劇的に向上し、クエリのスループットは少し制限されます。

Prestoでクエリを実行する

PrestoでSQLクエリが発行されると、クエリはコーディネーターに送られます。コーディネーターは、クエリを論理的なステップに分割して、最適化されたクエリ実行プランを作成します。コーディネーターが実行プランを作成すると、物理データの場所に最も近いワーカーノードに指示が行きわたり、物理ストレージからメモリにデータがストリーミングされます。ネットワーク全体でデータにパイプライン処理がなされ、結果がクライアント側に返されます。

データの種類

Prestoは分散型のSQLクエリエンジンで、ひとつ以上の異種データソースに分散した大規模なデータセットに対してクエリを実行できます。Presto自体はデータを保存しません。

行の範囲(量)

Prestoはペタバイト規模のSQLエンジンで、接続しているデータストアに依存します。たとえば、Hadoopクラスタを使用する場合は、postgresデータベースに接続している時よりもはるかに多くのデータを保存することができます。また、PrestoはANSI SQLを記述するため一度にたくさんのデータソースを活用することが可能で、処理できるデータ量も非常に多くなります。

Prestoを導入して使用する

Prestoの導入

Prestoは、GitHubまたはTeradataから無料でダウンロードすることができます。

ダウンロード後は、Prestoにソフトウェアをサーバーにデプロイするためのガイドがありますのでそちらを参照してください。​​​​​​​​​​​​​​

新規データの処理

PrestoはSQLエンジンであってデータベースではないため、データを保存することは一切ありません。つまり、新しいデータを追加する際は、手元にある既存のデータソースをPrestoに認識させることになります。具体的には、Prestoをその既存データソースに接続するか、あるいはPrestoのクエリ対象となるデータソースにデータを送ります。

アナリティクスを快適に

ビジネスインテリジェンス、ビッグデータ分析、顧客の360°ビュー。
Lookerはお客様のどんなニーズにもお応えします。当社のデータエキスパートにご相談ください。

デモをリクエスト