このトピックでは、コマンドラインインターフェイス (CLI) を使用して E-MapReduce (EMR) 上の Impala に接続する方法について説明します。
前提条件
クラスターを作成し、Impala サービスを選択している必要があります。詳細については、「クラスターの作成」をご参照ください。
impala-shell による接続
Impala に接続する前に、impala-shell --help コマンドを実行して詳細情報を確認できます。
標準クラスター
-
SSH 経由でクラスターのマスターノードに接続します。詳細については、「クラスターへのログイン」をご参照ください。
-
次のコマンドを実行して Impala に接続します。
impala-shell -i <impalad_node_name>このトピックの
<impalad_node_name>プレースホルダーは、Impalad ノードの名前を表します。ノード名を取得するには、EMR コンソールで Impala サービスの Status タブに移動し、[Impalad] コンポーネントを展開して、トポロジリストの [ノード名] 列で名前を見つけます。たとえば、ノード名は core-1-1 や core-1-2 のようになります。これらの名前のいずれかを使用して Impala に接続できます。上記のコマンドの<impalad_node_name>プレースホルダーを、取得したノード名に置き換えます。 -
オプション:
quit;コマンドを実行して Impala CLI を終了します。
高セキュリティクラスター
-
SSH 経由でクラスターのマスターノードに接続します。詳細については、「クラスターへのログイン」をご参照ください。
-
認証情報を初期化します。
-
次のコマンドを実行して Kerberos 認証情報を確認します。
klist出力に
klist: No credentials cache foundが含まれている場合は、次の手順で認証情報を初期化する必要があります。出力にすでに認証情報が含まれている場合は、認証情報の初期化をスキップして Impala に接続できます。 -
次のコマンドを実行してプリンシパルを表示します。
klist -k $IMPALA_CONF_DIR/impala.keytab出力からプリンシパルを記録します。次の手順で必要になります。たとえば、プリンシパルは
impala/master-1-1.c-45dcb9bbe234****.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE234****.COMです。[root@master-l-1(192.16xxx) ~]# klist -k $IMPALA_CONF_DIR/impala.keytab Keytab name: FILE:/etc/taihao-apps/impala-conf/runtime-conf/impala.keytab KVNO Principal ---- ---------------------------------------------------------------- 2 impala/master-l-1.c-45dcb9bbe234xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE234xxx.COM 2 impala/master-l-1.c-45dcb9bbe234xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE234xxx.COM 2 impala/master-l-1.c-45dcb9bbe234xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE234xxx.COM 2 impala/master-l-1.c-45dcb9bbe234xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE234xxx.COM 2 impala/master-l-1.c-45dcb9bbe234xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE234xxx.COM 2 impala/master-l-1.c-45dcb9bbe234xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE234xxx.COM 2 impala/master-l-1.c-45dcb9bbe234xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE234xxx.COM 2 impala/master-l-1.c-45dcb9bbe234xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE234xxx.COM -
次のコマンドを実行して認証情報を初期化します。
kinit -k -t $IMPALA_CONF_DIR/impala.keytab <principal>説明<principal>を前の手順で記録したプリンシパルに置き換えてください。
-
-
次のコマンドを実行して Impala に接続します。
impala-shell -k -i <impalad_node_name> -
オプション:
quit;コマンドを実行して Impala CLI を終了します。
Beeline JDBC による接続
標準クラスター
-
SSH 経由でクラスターのマスターノードに接続します。詳細については、「クラスターへのログイン」をご参照ください。
-
次のコマンドを実行して Impala に接続します。
beeline -u 'jdbc:hive2://<impalad_node_name>:28000/default;transportMode=http;uauth=noSasl' -
オプション:
quit;コマンドを実行して Impala CLI を終了します。
高セキュリティクラスター
-
SSH 経由でクラスターのコアノードに接続します。詳細については、「クラスターへのログイン」をご参照ください。
-
root ユーザーとして認証情報を初期化します。
-
次のコマンドを実行して Kerberos 認証情報を確認します。
klist出力に
klist: No credentials cache foundというメッセージが含まれている場合は、次の手順に進んでアクセス認証情報を初期化する必要があります。出力に認証情報が含まれている場合は、認証情報の初期化手順をスキップして、次の手順に進み Impala に接続できます。 -
次のコマンドを実行してプリンシパルを表示します。
klist -k $IMPALA_CONF_DIR/impala.keytab出力からプリンシパルを記録します。次の手順で必要になります。たとえば、プリンシパルは
impala/core-1-1.c-ee5cfb2d6306****.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2D6306****.COMです。[root@core-1-1(xxx) ~]# klist -k $IMPALA_CONF_DIR/impala.keytab Keytab name: FILE:/etc/taihao-apps/impala-conf/runtime-conf/impala.keytab KVNO Principal ---- ---------------------------------------------------------------- 2 impala/core-1-1.c-ee5cfb2dxxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2Dxxx.COM 2 impala/core-1-1.c-ee5cfb2dxxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2Dxxx.COM 2 impala/core-1-1.c-ee5cfb2dxxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2Dxxx.COM 2 impala/core-1-1.c-ee5cfb2dxxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2Dxxx.COM 2 impala/core-1-1.c-ee5cfb2dxxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2Dxxx.COM 2 impala/core-1-1.c-ee5cfb2dxxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2Dxxx.COM 2 HTTP/core-1-1.c-ee5cfb2d63xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2D63xxx.COM 2 HTTP/core-1-1.c-ee5cfb2d63xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2D63xxx.COM 2 HTTP/core-1-1.c-ee5cfb2d63xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2D63xxx.COM 2 HTTP/core-1-1.c-ee5cfb2d63xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2D63xxx.COM 2 HTTP/core-1-1.c-ee5cfb2d63xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2D63xxx.COM 2 HTTP/core-1-1.c-ee5cfb2d63xxx.cn-hangzhou.emr.aliyuncs.com@EMR.C-EE5CFB2D63xxx.COM -
次のコマンドを実行して認証情報を初期化します。
kinit -k -t $IMPALA_CONF_DIR/impala.keytab <principal>説明<principal>を前の手順で記録したプリンシパルに置き換えてください。
-
-
root ユーザーとして次のコマンドを実行して Impala に接続します。
beeline -u 'jdbc:hive2://<impalad_node_name>:28000/default;principal=<principal>;transportMode=http' -
オプション: Beeline CLI を終了するには、
!quitコマンドを実行します。
よくある質問
Impala ログはどこに保存されますか?
Impala ログはデフォルトで /var/log/taihao-apps/impala/ ディレクトリに保存されます。クラスターノードにログインし、このディレクトリに移動してログを表示できます。
Impala ログは、Impalad プロセスが実行されているノード (通常はコアノード) に保存されます。特定のノードでログが見つからない場合は、そのノードに Impalad プロセスがデプロイされているか確認してください。
Impala の過去のアクセスユーザーを照会するにはどうすればよいですか?
クラスターで Apache Ranger が有効になっていない場合、Impala は Hadoop 分散ファイルシステム (HDFS) のファイル読み取りおよび書き込み権限をアクセス制御に使用します。
監査ログから過去の接続アカウントを抽出するには、Impalad プロセスが実行されているノードで次のコマンドを実行します:
grep "Successfully authenticated client user" /var/log/taihao-apps/impala/impalad.INFO* | awk -F'"' '{print $2}' | sort | uniq -c | sort -nr
このコマンドは、Impala 監査ログで認証成功レコードを検索し、ユーザー名を抽出して、接続数の降順で表示します。
Impala の読み取り専用アカウントを作成するにはどうすればよいですか?
読み取り専用 Impala アカウントを作成するには、権限管理のために Apache Ranger が必要です。クラスターに Ranger がデプロイされていない場合は、読み取り専用権限などのきめ細かなアクセス制御を構成する前に、Ranger サービスを追加する必要があります。
EMR 4.9.0 の Impala は Ranger 認可をサポートしていますか?
いいえ。EMR 4.9.0 の Impala は Ranger 認可をサポートしていません。Impala の権限管理に Ranger を使用するには、より新しい EMR バージョンを実行するクラスターを作成し、データを新しいクラスターに移行することを推奨します。