本文为您介绍如何通过命令行工具访问Presto控制台。

前提条件

已创建E-MapReduce的Hadoop集群,并且选择了Presto服务。创建详情请参见创建集群

背景信息

  • 如果您创建的Hadoop集群,未打开Kerberos集群模式开关,则创建的集群即为普通集群,访问Presto控制台的操作步骤请参见普通集群
  • 如果您创建的Hadoop集群,打开了Kerberos集群模式开关,则创建的集群即为高安全集群,访问Presto控制台的操作步骤请参见高安全集群

普通集群

  1. 通过SSH方式登录集群。
    详情请参见使用SSH连接主节点
  2. 执行如下命令,进入Presto控制台。
    presto --server emr-header-1:9090 --catalog hive --schema default --user hadoop

    执行presto --help命令,可以获取Presto控制台的帮助信息。

  3. 执行如下命令,查看当前Catalog下的Schema。
    show schemas;
    返回如下信息。
           Schema
    --------------------
     default
     emr_presto_init__
     information_schema
    (3 rows)
  4. 可选: 执行quit;,可以退出Presto控制台。

高安全集群

  1. 通过SSH方式登录集群。
    详情请参见使用SSH连接主节点
  2. 添加Principal并导出keytab文件。
    1. 执行如下命令,进入Kerberos的admin工具。
      • EMR-3.30.0及后续版本和EMR-4.5.1及后续版本:
        sh /usr/lib/has-current/bin/admin-local.sh /etc/ecm/has-conf -k /etc/ecm/has-conf/admin.keytab
      • EMR-3.30.0之前版本和EMR-4.5.1之前版本:
        sh /usr/lib/has-current/bin/hadmin-local.sh /etc/ecm/has-conf -k /etc/ecm/has-conf/admin.keytab
    2. 执行如下命令,添加指定key的Principal。
      addprinc -randkey test
      说明 本文示例为添加test的Principal。
    3. 执行如下命令,导出keytab文件。
      xst -k /root/test.keytab test

      keytab文件默认导出至/root/目录下。

  3. 执行如下命令,进入Presto控制台。
    presto --server https://<hostname>:7778 \
           --catalog hive \
           --schema default \
           --keystore-path /etc/ecm/presto-conf/keystore \
           --keystore-password <passwd> \
           --krb5-keytab-path <keytab_file> \
           --krb5-principal <username>@EMR.<cluster_id>.COM \
           --krb5-remote-service-name presto \
           --user <username>
    参数 描述
    hostname 需要您在集群emr-header-1节点上执行hostname命令获取,格式为emr-header-1.cluster-xxx
    passwd 需要您在集群emr-header-1节点上执行sed -n 's/http-server.https.keystore.key=\([^;]*\)/\1/p' /etc/ecm/presto-conf/config.properties命令获取。
    keytab_file 导出的keytab文件的路径。本文示例为/root/test.keytab
    username 创建的keytab文件的Principal。本文示例为test。
    cluster_id 需要您在集群emr-header-1节点上执行hostname | grep -Eo '[0-9]+$'命令获取。
    示例截图如下。Presto
  4. 执行如下命令,查看当前Catalog下的Schema。
    show schemas;
    返回如下信息。
           Schema
    --------------------
     default
     emr_presto_init__
     information_schema
    (3 rows)
  5. 可选: 执行quit;,可以退出Presto控制台。

常见问题

Q:错误信息“Access Denied: User xxx@EMR.xxx.COM cannot impersonate user xxx”。

A:您需要在EMR控制台Presto服务配置的config.properties页面,先添加自定义配置,设置http-server.authentication.krb5.user-mapping.pattern的值为(.+)@EMR\\.[0-9]+\\.COM,然后重启PrestoMaster。add parameter重启服务截图如下。restart