Impala は、Apache Hadoop に保存されているデータに対して、高パフォーマンスかつ低レイテンシの SQL クエリを提供します。HDFS または HBase のデータに対し、SELECT、JOIN、集計関数を使用したリアルタイムクエリをサポートします。
背景情報
Impala は Apache Hive と同じメタデータ、SQL 構文 (Hive SQL)、ODBC ドライバーを使用し、バッチクエリとリアルタイムクエリのための使い慣れた統合プラットフォームを提供します。
注意事項
Impala コンポーネントを使用する場合、Impala または Hive コマンドを使用して Hive テーブルパーティションを削除してください。ファイルシステムからパーティションディレクトリを直接削除しないでください。この操作により、テーブルが使用できなくなります。
メリット
Impala は MapReduce の代わりに分散クエリエンジンを使用してデータへ直接アクセスします。これは、リレーショナルデータベース管理システム (RDBMS) と同様です。クエリタイプと設定に応じて、Impala は Hive よりも数桁高速になる場合があります。
Impala には、他の SQL-on-Hadoop ソリューションと比較して、次のメリットがあります:
-
データノード上でローカル処理を行うことで、ネットワークのボトルネックを回避します。
-
コストの高いデータ形式変換に伴うオーバーヘッドを排除します。
-
単一のオープンで統合されたメタストアを使用します。
-
すべてのデータを即座にクエリでき、ETL (extract, transform, and load) プロセスの完了を待つ必要がありません。
-
Impala のクエリと MapReduce タスクの両方に、すべてのハードウェアを使用します。
-
単一のコンピュータープールを使用してスケールします。
Impala の詳細については、「Apache Impala」をご参照ください。
アーキテクチャ
次の図は、E-MapReduce における Impala のアーキテクチャを示しています。
Impala は、次のコンポーネントで構成されます:
-
Impalad
コアノードとタスクノードにデプロイされます。スケールアウトとスケールインをサポートします。
Impala デーモン (Impalad) は Impala の中核コンポーネントです。各ノードで実行され、データファイルの読み取りと書き込みを行い、
impala-shellコマンド、Hue、Java Database Connectivity (JDBC)、または ODBC からのクエリを受け付けます。Impalad はクエリを並列化し、クラスター全体に処理を分散し、ローカルの結果をコーディネーターノードに返します。 -
Statestored
マスターノードの master-1-1 マシンにデプロイされます。
Statestore サービスは、Statestored プロセスとして実行されます。クラスター内のすべての Impalad プロセスのヘルスを監視し、ステータスをブロードキャストします。ノード障害、ネットワークの問題、またはソフトウェアの問題によって Impalad プロセスが使用できなくなった場合、Statestore は他のすべての Impalad プロセスに通知し、使用できないノードに新しいクエリが送信されないようにします。
-
Catalogd
マスターノードの master-1-1 マシンにデプロイされます。
Catalogd は、任意の Impalad プロセスからのメタデータ変更を、クラスター内の他のすべての Impalad プロセスに同期します。この同期処理は Statestore に依存するため、Statestore と Catalogd は同一ノードで実行してください。