
# 配置Presto通过IAM委托访问OBS
参考[配置MRS集群通过IAM委托对接OBS](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0768.html)完成存算分离集群配置后，Presto即可通过presto_cli.sh客户端创建表存储在OBS中。
#### Presto对接OBS（集群未启用Kerberos认证（普通模式））
1. 使用客户端安装用户，登录已安装客户端的节点。 
   下载并安装集群客户端的具体操作，请参考[安装MRS集群客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0089.html)。
   
   
2. 执行以下命令配置环境变量： 
   切换至客户端安装目录下：
   ```
   cd 客户端安装目录
   ```
   配置环境变量：
   ```
   source bigdata_env
   ```
   
   
3. 执行如下命令连接客户端。 
   ```
   presto_cli.sh
   ```
   
   
4. 执行以下命令创建Schema，并指定Location为OBS路径，例如： 
   ```
   CREATE SCHEMA hive.demo WITH (location = 'obs://mrs-word001/presto-demo002/');
   ```
   
   
5. 在该Schema中建表，该表的数据即会存储在OBS文件系统内，例如： 
   ```
   CREATE TABLE hive.demo.demo_table WITH (format = 'ORC') AS SELECT * FROM tpch.sf1.customer;
   ```
   图1普通集群Presto建表返回结果   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002381500773.png "点击放大")
   
   
6. 执行以下命令退出客户端： 
   ```
   exit
   ```
   
   
 
#### Presto对接OBS（集群已启用Kerberos认证（安全模式））
1. 登录MRS集群Manager界面。 
   登录集群Manager界面请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 创建一个拥有"Hive Admin Privilege"权限的角色，例如prestorole，创建角色请参考[管理MRS集群角色](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0343.html)。
3. 创建一个属于"Presto"和"Hive"组的用户，同时为该用户绑定[步骤 2]中创建的角色，例如presto001，创建用户请参考[创建MRS集群用户](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0345.html)。
   
   如果创建的人机用户，则还需使用新创建的用户登录Manager页面，修改初始密码。
   
   
4. 下载用户凭证。 
   - 针对MRS 3.x之前版本集群，在MRS Manager页面，选择"系统设置 \> 用户管理 "，选择新增用户所在行的"更多 \> 下载认证凭据"。
   
   - 针对MRS 3.x及之后版本，在FusionInsight Manager页面，选择"系统 \> 权限 \> 用户"，选择新增用户所在行的"更多 \> 下载认证凭据"。
   
   
   
   
5. 解压下载的用户凭证文件，得到"krb5.conf"和"user.keytab"两个文件并放入客户端目录，例如"*客户端安装目录* /Presto/"。
   
   下载并安装集群客户端的具体操作，请参考[安装MRS集群客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0089.html)。
   
   
6. 使用客户端安装用户，登录已安装客户端的节点。
7. 执行如下命令获取用户principal。
   
   ```
   klist -kt 客户端安装目录/Presto/user.keytab
   ```
   
   
8. 执行以下命令配置环境变量： 
   切换至客户端安装目录下：
   ```
   cd 客户端安装目录
   ```
   配置环境变量：
   ```
   source bigdata_env
   ```
   
   
9. 执行以下命令连接本集群的Presto Server： 
   ```
   presto_cli.sh --krb5-config-path {krb5.conf文件路径} --krb5-principal {用户principal} --krb5-keytab-path {user.keytab文件路径} --user {Presto用户名}
   ```
   表1参数值获取方法 
   | 参数值             | 获取方法                                                                                                                           |
   |:---|:---|
   | krb5.conf文件路径   | 请替换为[步骤 5]中设置的文件存放路径，例如"*客户端安装目录*/Presto/krb5.conf"。                                           |
   | user.keytab文件路径 | 请替换为[步骤 5]中设置的文件存放路径，例如"*客户端安装目录*/Presto/user.keytab""/opt/Bigdata/client/Presto/user.keytab"。 |
   | 用户principal     | 请替换为[步骤 7]中返回的结果。                                                                              |
   | Presto用户名       | 请替换为[步骤 3]中创建的用户名，例如"presto001"。                                                             |
      
   
   
10. 执行以下命令创建Schema，并指定Location为OBS路径，例如： 
    ```
    CREATE SCHEMA hive.demo01 WITH (location = 'obs://mrs-word001/presto-demo002/');
    ```
    
    
11. 在该Schema中建表，表的数据即会存储在OBS文件系统内，例如： 
    ```
    CREATE TABLE hive.demo01.demo_table WITH (format = 'ORC') AS SELECT * FROM tpch.sf1.customer;
    ```
    图2开启Kerberos认证的集群Presto建表返回结果   
    ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002381381061.png "点击放大")
    
    
12. 执行以下命令退出客户端： 
    ```
    exit
    ```
    
    
 
