Impalaは、インメモリで並列分散処理することができるデータベースエンジンです。以下の4つのサービスで構成されます。
Impala Daemon
Impala Statestore
Impala Catalog Service
Hive Metastore
Impala Daemonは、Impalaが動作する全てのデータノードで実行します。impala-shellやJDBC/ODBCクライアントからクエリを実行すると、1台のImpala Daemonが処理を受け付けます。Impala Daemonはクエリを並列化し、処理するべきデータを持っている他のデータノードにクエリを分散して実行します。
MapReduceとは異なり、中間データをディスクに書き込まないため高速ですが、多くのメモリを搭載している必要があります。
Impala Statestoreは、クラスタ内の全てのデータノードのImpala Daemonの状態をチェックします。Impala Daemonの状態は、Impala Statestoreを中継して、それぞれのImpala Daemonに通知されます。もし、Impala Daemonが実行するデータノードがハードウェア障害やネットワーク異常、ソフトウェアの問題やその他の理由でオフラインになった場合、そのImpala Daemonがクエリを受け付けないようにするために、他の全てのImpala Daemonに状態を通知します。
Impala Catalog Serviceは、メタデータの変更をクラスタ内の全てのデータノードのImpala Daemonに通知するサービスです。Impala Catalog Serviceにより、ある1つのデータノードのステートメント発行によってメタデータが更新された際にも全てのデータノードに対してメタデータの変更が反映されます。
Hive Metastoreは、Hiveテーブル定義やパーティション定義といったHiveメタデータをリレーショナルデータベースに格納し永続化するためのサービスです。Impalaメタデータは、Hiveメタデータと互換性を持ち、Hive Metastoreを経由してImpalaメタデータをデータベースに格納します。そのため、同じテーブル(データ)に対して、Hiveでクエリを実行したり、Impalaでクエリを実行することができます。Hive Metastoreがメタデータを格納するデータベースには、「組込みモード」、「ローカルモード」および「リモートモード」の3つの形式がありますが、本製品では「リモートモード」のみサポートしています。
Hive Metastoreが動作するサーバとは異なるサーバで動作するデータベースに接続するモードです。使用するデータベースから提供されるドライバを使って接続します。