- 印刷する
- PDF
Impala を使用する
- 印刷する
- PDF
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が使用中のポート番号(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エディタを確認できます。