最高のSQL-on-Hadoopツールに興味をお持ちですか?前回の記事「8 SQL-on-Hadoop Challenges」では、SQLとHadoopという2つのテクノロジー間のギャップを埋めるのに役立ついくつかのツールの概要を説明しましたが、あまり詳細には触れませんでした。今回は、SQLをHadoopにもたらしてくれる12のツールについて、オープンソースと商用のソリューションの両方を網羅して紹介します。

これらのツールは、価格、機能、有用なユースケース、アクセス性、将来性などの理由から選んだものです。それでは、SQL-on-Hadoopに不可欠な12のツールをご紹介します。

オープンソースのSQL-on-Hadoopツール

1. Apache Hive

thumbnail image

Apache Hiveは、SQL-on-Hadoopツールの中でもトップレベルのツールです。当初Facebookによって開発されたHiveは、Hadoop上に構築されたデータウェアハウス基盤です。HDFSに格納されたデータをHQL(MapReduceのジョブに翻訳されたSQLのような言語)を介して、分析のためのクエリを実行することができます。

SQL機能を提供しているように見えますが、HiveはHadoop上でバッチ処理を行い、インタラクティブなクエリ機能は提供していません。メタデータをリレーショナルデータベースに格納し、そのデータに対してスキーマを維持する必要があります。 Hiveはいくつかのファイル形式をサポートしており、ユーザー定義ファンクションとともにHadoop上で圧縮データを処理することもできます。

要点:HiveはSQLライクな言語でHadoop上でのバッチ処理を提供します。

Hive vs. HBaseをどっちを選ぶべきか迷ってますか?こちらのブログ「Hive vs. HBase 比較」をチェックしてください。

2. Apache Sqoop

最も価値のあるSQL-on-Hadoopツールの一つであるApache Sqoopは、Javaでデータベースに接続するための標準APIであるJDBCを介して、リレーショナルデータベースからHadoopへのデータのインポートとエクスポートを可能にします。関連するツールでデータの一括インポート/エクスポートが可能な場合には、JDBCなしでも動作します。

Sqoopは、リレーショナルデータベース上でクエリを実行し、結果の行をテキスト、バイナリ、Avro、シーケンスファイルのいずれかの形式でファイルにエクスポートすることで動作します。これらのファイルはHadoopのHDFSに保存され、Hadoopからリレーショナルデータベースに戻すこともできます。最後に、SqoopはHadoop用のテーブルおよびストレージ管理サービスであるHCatalogと統合されており、HiveまたはPig経由でSqoopのインポートされたファイルを照会することができます。(詳細はSqoopのブログ記事を参照してください)。

要点: Sqoopを使うと、SQLデータベースからApache Hadoopにデータをインポートしたり、Apache Hadoopからデータをエクスポートしたりすることができます。

3. Apache Phoenix

Apache Phoenixは HBase 上での対話的なクエリのための SQLスキンです。SQLクエリを一連の HBaseスキャンにコンパイルし、JDBC の結果セットを生成します。

Phoenix は、スクラッチから構築するか、既存の HBase テーブルからマップしたスキーマを維持する必要がある点に注意してください。さらに、Phoenix がサポートしていない機能がいくつかあります: 完全なトランザクションのサポート、派生テーブル、一部のリレーショナル演算子(Intersect、Minus)、および雑多なビルトイン関数 (手動で追加することはできますが)。このプロジェクトは主にSalesforce、Intel、Hortonworksによってメンテナンスされています。

要点: Apache Phoenix は HBase 上で対話的な SQLクエリを提供します。

4. Apache Impala

thumbnail image

Apache ImpalaはHadoopの上で動作し、HDFSとHBase上でインタラクティブなSQLクエリを実行するクエリエンジンです。バッチ処理を使用するApache Hiveとは異なり、Impalaはリアルタイムでクエリを実行するため、SQLベースのビジネスインテリジェンスツールとHadoopを統合することができます。

元々はエンタープライズデータクラウド企業のClouderaによって開発されたImpalaは、その後Apacheのオープンソース・ソフトウェア・エコシステムの一部となっています。Impalaは、テキスト、LZO、シーケンスファイル、Avro、RCFileを含む、すべての標準的なHadoopファイルフォーマットをサポートしています。また、ImpalaはAmazon Elastic MapReduce (EMR)を介してクラウド上で実行することも可能です。

要点: Impalaは、HDFSとHBaseを介した対話型SQLクエリのためのオープンソースソリューションです。

5. Apache Spark SQL

thumbnail image

Apache Spark SQL は、オープンソースのビッグデータ処理エンジンであるApache Sparkのモジュールで、Sparkプログラム内で構造化されたデータをクエリするのに役立ちます。これは、数年前に頓挫したApache Spark用の大規模データウェアハウスシステムであるApache Sharkの後継モジュールです。

Spark SQLでは、DataFramesと呼ばれる概念が導入されており、リレーショナルデータベースのテーブルと同等のもので、追加の機能強化と最適化が施されています。Spark SQLモジュールは、Hive、Avro、Parquet、ORC、JSON、JDBCを含む多くの異なるデータソースおよび、Java、Scala、Python、Rを含むプログラミング言語と互換性があります。

要点: Apache Spark SQLは、Apache Spark内でSQL-on-Hadoop機能が必要な場合に最適な選択肢です。

6. Apache Drill

Apache Drillは 「Hadoop、NoSQL、クラウドストレージのためのスキーマフリーのSQLクエリエンジン」と謳っています。Drillは、複雑で入れ子になったデータや非リレーショナルテーブルに対するSQLクエリを可能にするJSONデータモデルを利用しています。Drillでは、リレーショナルデータベースにクエリを実行するのと同じように、標準的なSQLクエリを使用することができます。

オープンソースの Drill プロジェクトは、大規模で分散したデータセットをクエリするための Google の Dremel システムをベースにしています。DrillにはREST APIがあり、Tableau、Qlik、SAS、Microsoft Excelなどのビジネスインテリジェンスアプリケーションと統合されています。

要点: Apache Drill はSQLを使用して Hadoop や NoSQL データベースをクエリすることができます。

7. Presto

Presto は、Hive、HBase、さらにはリレーショナルデータベースや独自のデータストアの上で動作するインタラクティブな SQL クエリエンジンで、企業や組織全体で複数のソースからのデータを結合するのに役立ちます。プロジェクトのウェブサイトによると、Prestoは「Hadoop上で最も高速なSQLエンジン」であり、それを裏付けるベンチマークがあります。

FacebookはPrestoの主な開発者であり、同社は300ペタバイトのデータウェアハウスを含む社内のデータストアに対するクエリにそれを使用しています。AirbnbDropboxのような他の大企業も、技術スタックでPrestoを使用しています。

要点: Presto は、Hive や HBase を介した対話的な SQL クエリのための Facebook のエンタープライズクラスのソリューションです。

8. Citusdata

Citus Data (CitrusDBと混同しないように注意ください。)は、Hadoop上で動作するSQLライクな機能を持つもう一つの対話型クエリエンジンです。Citusは、ビッグデータを処理するためのリアルタイム分析データベースのGoogle版であるDremelをベースにしています。2019年にMicrosoftに買収されて以来、Citusはオープンソースのソフトウェアとして、またAzure Database for PostgreSQLHyperscale(Citus)のデプロイメントオプションとして利用できるようになりました。

ImpalaやPrestoとは異なり、Citusは裏側で動作するSQLエンジンとしてPostgreSQLを使用しています。Citusはオンプレミスでもクラウドでも実行でき、全文検索、ジオ検索、ODBC/JDBC互換性などの機能をサポートしています。分析データベースであるCitusは、データの一括読み込みしかサポートしていません。

要点:CitusはPostgreSQLを使ったSQL-on-Hadoopの対話型のクエリを提供しています。

商用ライセンスのSQL-on-Hadoopツール

9. Jethro

Jethroは、データがHadoopに書き込まれるとすぐに自動的にインデックスを作成するHadoop用のSQLエンジンを提供することで、「BIのための最速のSQL-on-Hadoopエンジン」を提供すると謳っています。Jethroのウェブサイトによると、このツールはHiveやImpalaなどのツールよりも「最大100倍速いクエリ」を提供できると述べています。インストールと使用方法は簡単です。Jethroは既存のHadoopクラスタに追加することができ、侵入することもなく、Hadoopストレージノードにインストールする必要もありません。

要点: Jethroは、自動インデックスにより、高速で利用者に負担のかからないSQL-on-Hadoopを提供します。

10. HAWQ

HAWQ は、EMCの子会社であるPivotal社の商用SQL-on-Hadoopプラットフォームです。PivotalのGreenplum Analytic DatabaseとHadoopのHDFSをデータストレージに使用した並列SQLクエリエンジンを提供します。HAWQエンジンは、フルトランザクションをサポートしたアナリティクスに有用で、テキスト、Hive、HBase、Parquetを読み取る外部テーブルをHDFS上で作成する機能をサポートしています。

要点:HAWQはPivotalのSQL-on-Hadoopソリューションです。

11. BigSQL

Big SQL by IBM  (Postgres by BigSQLと混同されないように、現在は廃止されているようですが、オープンソースのプロジェクトです) は、大規模並列処理(MPP)や高度なデータクエリのためのIBMのSQL-on-Hadoopエンジンです。IBM Big SQLを使用して、リレーショナル・データベース、NoSQL データベース、HDFS、オブジェクト・ストアなど、さまざまな形式にアクセスすることができます。

IBM Big SQLは、クラスタ内の複数のノードにクエリを分散させることで、クエリのパフォーマンスを向上させます。Big SQLのユースケースには、既存の Oracle や IBM データウェアハウスからのデータのオフロードや、Hadoop に移行できないデータが保存されたリレーショナル・データベースへのフェデレーティッド・アクセスなどがあります。

要点: IBM Big SQLは、大企業向けに Hadoop 上の堅牢な SQL ツールを提供します。

12. PolyBase

PolyBaseは、SQLクエリを処理するためのMicrosoftのSQL-on-Hadoopツールです。Microsoft SQL Serverのお客様は、PolyBaseを使用して、HadoopやAzure Blob Storage、SQL Server、Oracle、Teradata、MongoDBデータベースのデータにアクセスできます。

Transact-SQL言語を使用することで、PolyBaseのユーザーは、Hadoopに格納されたデータをクエリしたり、Hadoopからデータをインポートしたり、Hadoopにデータをエクスポートしたりすることができます。PolyBaseのクエリオプティマイザは、計算をHadoopにプッシュするかどうかを判断し、Hadoopの分散性を活かしたMapReduceジョブを作成することができます。

要点: PolyBase は、Microsoft SQL Server のユーザーにとって強力な SQL-on-Hadoop ツールです。

SQL on Hadoopのガイダンスをお探しですか? Integrate.ioがサポートします。

Hadoopの世界のビッグデータガイドが必要ですか?Integrate.ioのデータ統合のエキスパートは、ビッグデータのワークフローを最適化する方法を知っています。私たちのクラウドベースのETL(extract, transform, load)ソリューションは、膨大な範囲のソースとデスティネーションにわたって自動化されたデータフローのためのシンプルで可視化されたデータパイプラインを提供します。

Integrate.ioのHPにアクセスし、オンラインデモとリスクフリーのトライアルをスケジュールし、Integrate.ioプラットフォームの使い勝手をご自身で体験してみてください。