SQLでHadoopをクエリする10の方法

SQL:古くて破壊されました。Hadoop:新しい辛さ。これは従来の常識ですが、Hadoopデータストアに便利なSQLフロントエンドを配置するプロジェクトの数が非常に多いことから、Hadoopのネイティブレポートを使用したり、Hadoopデータをにエクスポートしたりするのではなく、Hadoop内に存在するデータに対してSQLクエリを実行する製品が本当に必要であることがわかります。従来のデータベース。

MapRは独自のHadoopディストリビューションを生成し、最新版(4.0.1)は、HadoopバイアルSQLをクエリするための4つの異なるエンジンとバンドルしています。4つはHadoopの重要なSQLクエリシステムですが、はるかに多くのSQL-for-Hadoopテクノロジーがあり、難解なものから普遍的なものまで、さまざまなニーズとユースケースを満たすように構築されています。

まず、MapRに付属する4つのSQLエンジン:

Apache Hive:これはオリジナルのSQL-on-Hadoopソリューションであり、コマンドラインクライアントを含むMySQLの動作、構文、およびインターフェイスをエミュレートしようとします。また、MySQLスタイルのクエリを実行するJavaアプリケーションに既存の投資をしている人のためのJavaAPIおよびJDBCドライバーも含まれています。比較的単純で使いやすいにもかかわらず、Hiveは低速で読み取り専用であり、それを改善するための多くのイニシアチブを引き起こしました。

Stinger:独自のHadoopディストリビューションのプロデューサーであるHortonworksは、Apache Hiveの開発を進め、そのパフォーマンスを向上させる方法としてStingerプロジェクトを開始しました。プロジェクトの最新の化身であるStinger.nextは、トランザクション動作(挿入、更新、および削除)のサポートとともに、設計目標の1つとして「1秒未満のクエリ応答時間」を持っています。これらの変更はすべて、SQL分析などの他の機能とともに、今後18か月でデビューする予定です。

Apache Drill: GoogleのDremel(別名BigQuery)のオープンソース実装であるDrillは、さまざまなクエリインターフェイス(HadoopやNoSQLなど)を使用して複数のタイプのデータストアで一度に低レイテンシのクエリを実行し、高度にスケーラブルにするために考案されました。ドリルはまた、広範囲の実行時間内でクエリを実行することを目的としており、数ミリ秒から数分間実行されます。 MapRは、Drillは、単に下位互換性があるだけでなく、将来を見据えていると主張しています。これは、Drillが独自の開発努力をそのプロジェクトの背後に置くことを選択した理由の1つです。

Spark SQL: ApacheのSparkプロジェクトは、Hadoopデータのリアルタイムのメモリ内並列処理用です。Spark SQLはその上に構築されており、SQLクエリをデータに対して書き込むことができます。これは、Hiveテクノロジーの主要部分を再利用するため、ApacheSpark用のApacheHiveとして考える方がよいでしょう。その意味で、これはすでにSparkを使用している人のための補助です。(以前のプロジェクトであるSharkは、このプロジェクトに含まれています。)

これらの4つを超えて、他の6つが際立っています。

Apache Phoenix:その開発者はこれを「HBaseのSQLスキン」と呼んでいます。これは、高性能および読み取り/書き込み操作用に構築された埋め込み可能なJDBCドライバーを介してSQLのようなコマンドでHBaseにクエリを実行する方法です。HBaseはオープンソースであり、積極的に開発されており、大量のデータの読み込みなどの便利な機能を備えているため、HBaseを利用する人にとってはほとんど簡単だと考えてください。

Cloudera Impala:ある意味で、ImpalaはDremel / Apache Drillの別の実装であり、Hiveを拡張して、既存のHiveユーザーがそれを最大限に活用できるように設計されています。HDFSまたはHBaseのいずれかに格納されているデータを照会でき、SQL構文は予想通りApacheHiveと同じです。しかし、ImpalaとDrillの主な違いは、ソースに依存しないことを意図していないことです。Hadoopのみにクエリを実行します。

HAWQ for Pivotal HD: Pivotalは独自のHadoopディストリビューション(Pivotal HD)を提供し、HAWQはHDFSでSQLクエリを実行するための独自のコンポーネントです。その結果、これはPivotalのみの製品ですが、Pivo​​talは並列SQL処理とSQL標準への高いコンプライアンスに悩まされています。

Presto: Facebookのエンジニアによって構築され、その会社の内部で使用されているこのオープンソースクエリエンジンは、ソースに依存しないという点でApacheDrillを彷彿とさせます。ANSI SQLコマンドを使用してHiveとCassandraの両方にクエリを実行でき、開発者はサービスプロバイダーインターフェイスを使用してコネクタを作成することでシステムを拡張できます。一部のデータ挿入機能はサポートされていますが、それでも非常に基本的です。更新は実行できず、挿入のみを実行できます。

Oracle Big Data SQL: OracleがHadoop用の独自のSQLクエリフロントエンドをリリースするのは時間の問題でした。ドリルと同様に、Hadoopストアと他のNoSQLストアの両方にクエリを実行できます。ただし、Drillとは異なり、これはOracle独自の製品であり、Oracle Database 12c以降とのみ統合されるため、市場が大幅に制限されます。

IBM BigSQL: IBMが同じことを行うのは時間の問題でしたが、2013年の初めにBigSQLの最初のテクノロジープレビューを発表しました。悲しいことに、Oracleの製品と同様に、バックエンドの特定のIBM製品に関連付けられています-この場合、IBMのHadoop、InfoSphereBigInsightsです。とはいえ、フロントエンドは標準のJDBC / ODBCクライアントにすることができ、クエリにはIBM DB2、Teradata、またはPureData Systems forAnalyticsインスタンスからのデータを含めることができます。