Documentation Index

Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt

Use this file to discover all available pages before exploring further.

Impala を使用する

Prev Next

VPC環境で利用できます。

Impalaは大規模の並列処理エンジンとして、保存したデータをインタラクティブ SQLを用いてリアルタイムで分析できるシステムです。Hadoop HDFSだけでなく HBase、Kuduなどの様々な保存場所からデータを読み取ることができ、Hive、Hueなどと連携して使用できます。別途専用メタストアを使用せず、既存の Hiveメタストアを使用します。
Impalaは Hiveが持っているリアルタイム性 Queryパフォーマンス問題とマルチユーザーのサポートを解決するために登場しました。HivePigは 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のステータスを管理
  • Catalogdからリクエストされた Impaladのメタデータ同期タスクを実行
Impala Catalog(Catalogd)
  • クエリ時にこれを Impaladのメタデータに反映するために StateStoredにブロードキャスティングをリクエスト
  • Impaladで直接メタデータを変更した場合、自動で同期化
  • Hiveや HDFSで直接変更した場合、Refresh文を使用して同期タスクを実行

クエリ実行プロセス

クエリの実行プロセスは、次の通りです。

  1. ユーザーはクラスタ内の特定 impaladで impala shell、ODBCなどを利用してクエリを実行
  2. Impaladは Hive metastoreでテーブルスキーマをインポートしてクエリの適合性を判断し、HDFSネームノードでクエリ実行に必要なデータブロックと各位置情報を収集
  3. 最近アップデートされた impalaメタデータをベースにクラスタ内のすべての impaladにクエリ実行に必要な情報を伝播
  4. クエリとメタデータが転送されたすべての impaladは各自処理するデータブロックをローカルディレクトリから読み取り、クエリ処理を実行
  5. すべての impaladでタスクが完了するとユーザーからクエリを受けた impaladは結果を収集してユーザーに転送

chadoop-30-00o

Impala を使用する

Impalaを使用する方法を説明します。

クラスタ作成

NAVERクラウドプラットフォームコンソールで Cloud Hadoopクラスタを作成します。クラスタ作成に関する詳細は、クラスタ作成をご参照ください。

Ambari UIで Impalaサービスをインストール

Ambari UIの Add serviceから Impalaをインストールできます。

インストール時に設定するオプションは次の通りです。
Advanced impala-env

設定項目
statestore_host Impala_statestore_설치_FQDN
catalog_host Impala_catalog_설치_FQDN
java_shared_lib_dir /usr/jdk64/jdk1.8.0_192/jre/lib/amd64/server

Ambari UIで Impalaサービス確認

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

chadoop-30-003

  • 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_3_1_0_0_78/impala-shell/impala-shell -i <hiveserver2がインストールされた FQDN>
    
    例) impala-shell -i m-001-クラスタ名-***-hd.kr.ch.naverncp.com;
    
参考

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にアクセス

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

chadoop-impala-hue_ko

参考

Impalaエディタが表示されない場合、以下の手順を実行してください。

  • Ambari Web UI > Hue > Configs > Hue Service Module > Hue Impala Moduleをクリックします。
  • ON ステータスに変更した後、サービスを再実行します。
    chadoop-impala-hue-module