连接Impala

更新时间:
复制 MD 格式

本文为您介绍如何在E-MapReduce(简称EMR)上使用命令行工具操作Impala。

前提条件

已创建集群,并且选择了Impala服务,详情请参见创建集群

impala-shell连接方式

在连接Impala前,您可以执行impala-shell --help命令获取帮助。

普通集群

  1. 通过SSH方式连接集群的Master节点,详情请参见登录集群

  2. 执行以下命令,连接Impala。

    impala-shell -i <impalad节点名称>

    本文中的<impalad节点名称>,您可以在EMR控制台Impala服务的状态页签,Impalad拓扑列表中的节点名称列查看。例如,查看到的节点名称是core-1-1core-1-2节点,连接Impala时选择其中任意一个节点名称即可。在EMR控制台的Impala服务状态页面中,展开Impalad组件,在拓扑列表的节点名称列可获取Impalad节点名称(例如core-1-1、core-1-2),将其替换到上述命令的 <impalad 节点名称> 处。

  3. 可选: 执行命令quit;,您可以退出Impala命令行。

高安全集群

  1. 通过SSH方式连接集群的Master节点,详情请参见登录集群

  2. 初始化凭证。

    1. 执行以下命令,查看是否有Kerberos凭证。

      klist

      如果输出信息中包含内容klist: No credentials cache found,则需要执行下一步初始化一个访问凭证。如果输出信息中有凭证信息,则可跳过初始化凭证步骤,直接使用impala-shell命令连接Impala。

    2. 执行以下命令,查看Principal信息。

      klist -k $IMPALA_CONF_DIR/impala.keytab

      记录返回信息中的第一行信息,下步骤中会使用。例如,本示例获取到的信息为impala/master-1-1.c-45dcb9bbe234****.cn-hangzhou.emr.aliyuncs.com@EMR.C-45DCB9BBE23****.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
    3. 执行以下命令,初始化凭证。

      kinit -k -t $IMPALA_CONF_DIR/impala.keytab <Principal信息>
      说明

      <Principal信息>为前一步骤中记录的返回信息。

  3. 执行以下命令,连接Impala。

    impala-shell -k -i <impalad节点名称>
  4. 可选: 执行命令quit;,您可以退出Impala命令行。

Beeline JDBC连接方式

普通集群

  1. 通过SSH方式连接集群的Master节点,详情请参见登录集群

  2. 执行以下命令,连接Impala。

    beeline -u 'jdbc:hive2://<impalad节点名称>:28000/default;transportMode=http;uauth=noSasl'
  3. 可选: 执行命令quit;,您可以退出Impala命令行。

高安全集群

  1. 通过SSH方式连接集群的Core节点,详情请参见登录集群

  2. root用户身份初始化凭证。

    1. 执行以下命令,查看是否有kerberos凭证。

      klist

      如果输出信息中包含内容klist: No credentials cache found,则需要执行下一步初始化一个访问凭证。如果输出信息中有凭证信息,则可跳过初始化凭证步骤,直接使用impala-shell命令连接Impala。

    2. 执行以下命令,查看Principal信息。

      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
    3. 执行以下命令,初始化凭证。

      kinit -k -t $IMPALA_CONF_DIR/impala.keytab <Principal信息>
      说明

      <Principal信息>为前一步骤中记录的返回信息。

  3. root用户身份执行以下命令,连接Impala。

    beeline -u 'jdbc:hive2://<impalad节点名称>:28000/default;principal=<Principal信息>;transportMode=http'
  4. 可选:执行命令!quit,您可以退出Impala命令行。

常见问题

如何查找 Impala 日志?

Impala 日志默认存储在 /var/log/taihao-apps/impala/ 目录下。如果在 Core 节点上找不到 Impala 日志,请确认查找路径是否正确。

若集群未开启 Ranger 服务,Impala 的权限校验基于 HDFS 文件读写权限。可以通过以下命令从审计日志中提取历史连接 Impala 的用户信息:

grep "Successfully authenticated client user" /var/log/taihao-apps/impala/impalad.INFO* | awk -F'"' '{print $2}' | sort | uniq -c | sort -nr

该命令会按连接次数从高到低列出所有历史连接用户。

如何为 Impala 创建只读账号?

创建 Impala 只读账号需要通过 Apache Ranger 实现权限控制。如果集群未部署 Ranger 服务,需要先在集群中添加 Ranger 组件。

重要

EMR 4.9.0 版本的 Impala 不支持 Ranger 授权。如需使用 Ranger 管理 Impala 权限,建议新建高版本 EMR 集群并迁移数据。