HiveとImpalaの違いとは?分かりやすく解説!

この記事には、アフィリエイト広告を利用しています。

スポンサーリンク


HiveとImpalaの主な違いは、HiveがHadoop上に構築された大規模分散データセットにアクセスし管理するために使用できるデータウェアハウスソフトウェアであるのに対し、ImpalaはHadoop上に保存されたデータを管理・分析するための大規模並列処理SQLエンジンである点です。

Hiveは、Hadoopファイルに格納された大規模なデータセットを照会・分析するためのオープンソースのデータウェアハウスシステムです。

Impalaは、Hadoop分散ファイルシステムに格納されているデータにアクセスする最速の方法を提供します。

いずれもHadoopに関連するサブツールです。

スポンサーリンク

Hadoopとは?

ビッグデータとは、大量、高速、多様なデータを持つ大規模なデータセットを指します。

ビッグデータは日々収集されており、従来の手法では処理しきれない。

そこで、Apache Software Foundationは、ビッグデータを管理・処理するためにHadoopというフレームワークを導入した。

これは、オープンソースのフレームワークです。

Hadoopは2つのモジュールから構成されています。

Hadoopは、MapReduceとHDFS(Hadoop Distributed File System)の2つのモジュールで構成されています。

  MapReduceモジュールは、コモディティハードウェアの大規模クラスタ上で構造化、半構造化、非構造化の巨大データを処理するのに役立つ。

さらに、HDFSはデータセットの保存と処理に使用されます。

HDFSは、コモディティハードウェア上で動作するフォールトトレラントなファイルシステムを提供します。

ハイブとは

The Hadoop ecosystem consists of various sub-tools that help the Hadoop module. Hive is one of them. It was initially developed by Facebook but was later taken by Apache Software Foundation. It helps to summarize big data, make queries and analyze them easily. It provides SQL type language to write queries called Hive QL or HQL.Difference Between Hive and Impala

HadoopとHadoopフレームワークのやりとりは、以下のような流れで行われます。

  1. HiveインターフェースからJDBCやODBCなどのドライブにクエリを送信し、クエリを実行する。
    1. ドライブはクエリコンパイラの助けを借りてクエリを解析し、構文をチェックする。
    1. コンパイラはメタデータ要求をメタストアに送信する。
    1. メタストアはメタデータをレスポンスとしてコンパイラに送る。
    1. コンパイラは要求を確認し、ドライバにプランを再送信する。ここまでで、クエリの解析とコンパイルが完了する。
    1. 次に、ドライブは実行プランを実行エンジンに送る。
    1. 次に、ジョブが実行される。MapReduceのジョブです。実行エンジンは、メタストアによるメタデータ操作を実行できる。
  2. そして、結果が取り出される。実行エンジンはデータノードから結果を取得する。
    1. 実行エンジンは結果をドライバに送る。
  3. 最後に、ドライバは結果をHiveインターフェースに送る。

Impalaとは

Impalaは、Hadoopクラスタに格納された大量のデータを処理するための大規模並列処理SQLクエリエンジンです。

C++とJavaで記述されています。

Hiveよりも高いパフォーマンスを発揮します。

スケーラビリティ、柔軟性、SQLサポート、マルチユーザーパフォーマンスを提供します。

  HBaseというSQL型のクエリを用いてHDFSと通信することで、より高速な処理が可能になります

また、ParquetやAvroなどの様々なファイル形式を読み込むことができます。

メタデータ、SQL構文(Hive SQL)、ODBCドライバ、Hiveと同様のユーザーインターフェイスを使用します。

バッチ処理やリアルタイム処理のための統一的なプラットフォームを提供します。

HiveとImpalaの違い

定義

Hiveは、Apache Hadoopの上に構築された、データクエリーと分析を提供するデータウェアハウスソフトウェアプロジェクトです。

Impalaは、Apache Hadoopが稼働するコンピュータクラスタに格納されたデータに対する、超並列処理可能なSQLクエリーエンジンです

このように、HiveとImpalaの根本的な違いを説明します

基本情報

HiveとImpalaのもう一つの違いは、操作の基本です。

Hive は MapReduce Algorithm に基づいている。

Impala は MapReduce Algorithm をベースにしていない。

ImpalaはMapReduceのアルゴリズムをベースにしておらず、デーモンプロセスをベースとした分散アーキテクチャを実装している。

また、同じマシン上で実行されるクエリの実行もImpalaが担当する。

中間期実績

さらに、Hiveは中間結果をすべて実体化することで、スケーラビリティと耐障害性を向上させています。

Impalaでは、実行者間で中間結果のストリーミングを行う。

インタラクティブ・コンピューティング

したがって、ImpalaはHiveよりもインタラクティブなコンピューティングに適しています。

速度

さらに、Impala は Hive よりもレイテンシーを抑えているため、より高速です。

これはHiveとImpalaの大きな違いです。

タイプ

HiveとImpalaのもう一つの違いは、HiveがバッチベースのHadoop MapReduceであるのに対し、Impalaは大規模並列処理のSQLクエリエンジンであることです。

クエリーの実行

また,Hiveでは,実行中にデータノードがダウンしても,フォールトトレラントなので,クエリの出力は生成される.Impala では、実行中にデータノードがダウンしても、クエリの実行は最初から開始される。

複合型

Hive は複雑な型をサポートしますが、Impala は複雑な型をサポートしません。

結論

HiveとImpalaの違いは、HiveがHadoop上に構築された大規模分散データセットにアクセスし管理するためのデータウェアハウスソフトウェアであるのに対し、ImpalaはHadoop上に保存されたデータを管理・分析するための大規模並列処理SQLエンジンである点です。

タイトルとURLをコピーしました