Impala-architecture

提供:Dev Guides
移動先:案内検索

Impala-アーキテクチャ

Impalaは、Hadoopクラスター内の多くのシステムで実行されるMPP(Massive Parallel Processing)クエリ実行エンジンです。 従来のストレージシステムとは異なり、impalaはストレージエンジンから切り離されています。 これには、Impalaデーモン_(Impalad)_、Impala Statestore、Impalaメタデータまたはメタストアの3つの主要コンポーネントがあります。

Impalaアーキテクチャ

Impalaデーモン(Impalad

Impalaデーモン( impalad とも呼ばれる)は、Impalaがインストールされている各ノードで実行されます。 Impalaシェル、Hueブラウザなどのさまざまなインターフェイスからクエリを受け取り、処理します。

クエリが特定のノードのimpaladに送信されるたびに、そのノードはそのクエリの「コーディネーターノード」として機能します。 複数のクエリは、他のノードで実行されている_Impalad_によっても提供されます。 クエリを受け入れた後、_Impalad_はデータファイルの読み取りと書き込みを行い、Impalaクラスター内の他のImpalaノードに作業を分散することでクエリを並列化します。 さまざまな_Impaladインスタンス_でクエリが処理されている場合、すべてのクエリが結果を中央の調整ノードに返します。

要件に応じて、クエリを専用の_Impalad_に送信したり、クラスター内の別の_Impalad_に負荷分散した方法で送信したりできます。

インパラステートストア

Impalaには、Impalaステートストアと呼ばれる別の重要なコンポーネントがあります。このコンポーネントは、各_Impalad_のヘルスをチェックし、各Impalaデーモンのヘルスを他のデーモンに頻繁に中継します。 これは、Impalaサーバーまたはクラスター内の他のノードが実行されているのと同じノードで実行できます。

Impala State storeデーモンプロセスの名前は_State stored_です。 _Impalad_は、その状態をImpala状態ストアデーモン、つまり_State stored_に報告します。

何らかの理由でノードに障害が発生した場合、_Statestore_はこの障害に関する他のすべてのノードを更新し、そのような通知が他の_impalad_で利用可能になると、他のImpalaデーモンは影響を受けるノードにそれ以上のクエリを割り当てません。

Impalaメタデータとメタストア

Impalaメタデータとメタストアも重要なコンポーネントです。 Impalaは、従来のMySQLまたはPostgreSQLデータベースを使用してテーブル定義を保存します。 テーブルと列の情報とテーブルの定義などの重要な詳細は、メタストアと呼ばれる集中データベースに保存されます。

各Impalaノードは、すべてのメタデータをローカルにキャッシュします。 非常に大量のデータや多数のパーティションを処理する場合、テーブル固有のメタデータの取得にはかなりの時間がかかります。 したがって、ローカルに保存されたメタデータキャッシュは、そのような情報を即座に提供するのに役立ちます。

テーブル定義またはテーブルデータが更新されると、他のImpalaデーモンは、問題のテーブルに対して新しいクエリを発行する前に、最新のメタデータを取得してメタデータキャッシュを更新する必要があります。

クエリ処理インターフェイス

Impalaは、クエリを処理するために、以下にリストする3つのインターフェイスを提供します。

  • Impala-shell -Cloudera VMを使用してImpalaをセットアップした後、エディターでコマンド impala-shell を入力してImpalaシェルを起動できます。 Impalaシェルについては、今後の章で詳しく説明します。
  • * Hueインターフェース*-Hueブラウザを使用してImpalaクエリを処理できます。 Hueブラウザーには、Impalaクエリを入力して実行できるImpalaクエリエディターがあります。 このエディターにアクセスするには、まず、Hueブラウザーにログインする必要があります。
  • * ODBC/JDBCドライバー*-他のデータベースと同様に、ImpalaはODBC/JDBCドライバーを提供します。 これらのドライバーを使用すると、これらのドライバーをサポートするプログラミング言語を介してimpalaに接続し、これらのプログラミング言語を使用してimpalaでクエリを処理するアプリケーションを構築できます。

クエリ実行手順

ユーザーが提供されたインターフェイスのいずれかを使用してクエリを渡すと、クラスター内のImpaladsの1つがこれを受け入れます。 このImpaladは、その特定のクエリのコーディネーターとして扱われます。

クエリを受け取った後、クエリコーディネーターは、Hiveメタストアの Table Schema を使用して、クエリが適切かどうかを検証します。 後で、クエリの実行に必要なデータの場所に関する情報をHDFS名前ノードから収集し、この情報をクエリを実行するために他のインパラに送信します。

他のすべてのImpalaデーモンは、指定されたデータブロックを読み取り、クエリを処理します。 すべてのデーモンがタスクを完了するとすぐに、クエリコーディネーターは結果を収集してユーザーに配信します。