最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。
VPC環境で利用できます。
Impalaは大規模の並列処理エンジンとして、保存したデータをインタラクティブ SQLを用いてリアルタイムで分析できるシステムです。Hadoop HDFSだけでなく HBase、Kuduなどの様々な保存場所からデータを読み取ることができ、Hive、Hueなどと連携して使用できます。別途専用メタストアを使用せず、既存の Hiveメタストアを使用します。
Impalaは Hiveが持っているリアルタイム性 Queryパフォーマンス問題とマルチユーザーのサポートを解決するために登場しました。Hive、Pigは Map-Reduceフレームワークを通してクエリを処理するのに対し、Impalaは独自の分散クエリエンジンを使用するためにレスポンス時間が一番早い方です。
Impala単一コマンドに対する Transactionをサポートするが、多重コマンドに対する Transactionをサポートしません。
Impalaの構成要素
Impalaサービスを構成するコンポーネントには Impala Daemon、StateStore、Catalog Serviceの3種類があります。
-
Impala Daemon(Impalad)
Hadoopクラスタ内のデータノードにインストールされてリクエストを受けたクエリに対する計画、スケジューリング、実行エンジンを管理するロールを担います。各 Impaladは Query Planner、Query Coordinator、Query Exec engineに構成されます。- Query Planner: クエリに関する実行計画の策定
- Query Coordinator: jobリストとスケジューリングを管理して Executorにリクエスト
- Query Exec Engine: クエリを最適化して実行し、Coordinatorに結果をリターン
-
Impala Statestore(StateStored)
クラスタの各データノードで実行する Impaladのステータスを管理し、Catalogでリクエストを受けた Impaladに関するメタデータの同期化を行います。 -
Impala Catalog(Catalogd)
クエリ時に Impaladのメタデータに反映するために StateStoredにブロードキャスティングをリクエストするロールを担います。Impaladで直接メタデータを変更した場合に自動で同期化され、Hiveや HDFSで直接変更した場合は Refresh文で同期化を行います。
クエリ実行プロセス
クエリの実行プロセスは、次の通りです。
- ユーザーはクラスタ内の特定 impaladで impala shell、ODBCなどを利用してクエリを実行
- Impaladは Hive metastoreでテーブルスキーマをインポートしてクエリの適合性を判断し、HDFSネームノードでクエリ実行に必要なデータブロックと各位置情報を収集
- 最近アップデートされた impalaメタデータをベースにクラスタ内のすべての impaladにクエリ実行に必要な情報を伝播
- クエリとメタデータが転送されたすべての impaladは各自処理するデータブロックをローカルディレクトリから読み取り、クエリ処理を実行
- すべての impaladでジョブが完了するとユーザーからクエリを受けた impaladは結果を収集してユーザーに転送

Impalaを使用する
Impalaを使用する方法を説明します。
クラスタ作成
NAVERクラウドプラットフォームコンソールで Cloud Hadoopクラスタを作成します。クラスタ作成に関する詳細は、クラスタ作成をご参照ください。
Cloud Hadoop 1.9から Impala v4.1.0がインストールされたクラスタを使用できます。

Ambari UIで Impalaサービス確認
Ambari UIで次のように Impalaサービスを確認できます。このページで、サービスの各コンポーネントを開始または停止できます。

- Summary: コンポーネントがインストールされたホストを確認
- Configs: Impalaサービスの configurationを変更
- Quick Links: Impala Statestore WEB-UI, Impala Catalog WEB-UI, Impala Server WEB-UI
- このリンクを介してアクセスするには、トンネリングが必要です。コンソールで提供する Web UIリンクを用いたアクセスをお勧めします。詳細は、Impala WEB UIにアクセスをご参照ください。
Impalaがインストールされたクラスタに Atlasサービスをインストールする場合、Port重複により Atlasサービスが正常に実行されないことがあります。
Ambari UI > Atlas > CONFIGS > ADVANCED > Advanced application-properties > atlas.server.http.port の値を Impalaが利用中の Port番号(21000)と重複しないように変更した後、サービスを再実行してください。
Impala shell
Impala shellはクエリを実行できる反応型シェル(shell)を提供します。Impala shell使用に関する詳細は、Impala shell Documentationをご参照ください。
- Impala shellでの impalad接続
/usr/lib/impala/impala-shell/impala-shell connect <impalad-HOST-NAME>
Impala shellで impaladに接続時の<impalad-HOST-NAME>は、impaladを実行中のデータノードのホスト名です。 Ambari UI > Impala > Quick Links > Impala Server WEB-UI のホスト名です。
-
テーブルを作成するために Hiveプロパティを変更
Ambari UI > Hive > CONFIGS > ADVANCED > Advanced hive-site > hive.strict.managed.tables 値を false に変更して保存し、Hiveを再起動します。 -
データベースとテーブル作成
CREATE database test; USE test; CREATE TABLE testTable ( ID INT ); -
データの保存後に照会
INSERT INTO testTable(ID) VALUES (1); SELECT * FROM testTable;
より多くのクエリのユースケースは Apache Impala Guideの p.35~p.39をご参照ください。
Impala WEB UIにアクセス
Cloud Hadoopコンソールで [Application別に見る] から Impala WEB UIにアクセスできます。詳細は、Application別に見るをご参照ください。

-
Impala Serverアクセス用 WEB UIページで Impalaサービスに関する全体のステータスを確認できます。クエリ履歴も照会できます。

-
Hue WEB UIで Impalaエディタを確認できます。

Impalaエディタが表示されない場合、以下の手順を実行してください。
Ambari Web UI > Hue > Configs > Hue Service Module > Hue Impala Module をクリックして ON ステータスに変更した後、サービスを再実行してください。
