更新时间:2024-03-12 GMT+08:00

配置存算分离集群(委托方式)

MRS支持用户将数据存储在OBS服务中,使用MRS集群仅做数据计算处理的存算模式。MRS通过IAM服务的“委托”机制进行简单配置, 实现使用ECS自动获取的临时AK/SK访问OBS。避免了AK/SK直接暴露在配置文件中的风险。

通过绑定委托,ECS或BMS云服务将有权限来管理您的部分资源,请根据实际业务场景需求确认是否需要配置委托。

MRS提供如下访问OBS的配置方式,请选择其中一种配置即可(推荐使用委托方式):

  • 通过为MRS集群绑定ECS委托方式访问OBS,避免了AK/SK直接暴露在配置文件中的风险,具体请参考本章节。
  • 在MRS集群中配置AK/SK,AK/SK会明文暴露在配置文件中,请谨慎使用,具体请参考配置存算分离集群(AKSK方式)

集群的Hadoop、Hive、Spark、Presto、Flink组件支持该功能。

步骤一:创建具有访问OBS权限的ECS委托

  • MRS在IAM的委托列表中预置了MRS_ECS_DEFAULT_AGENCY委托,可在集群创建过程中可以选择该委托,该委托拥有对象存储服务的OBS OperateAccess权限和在集群所在区域拥有CES FullAccess(对开启细粒度策略的用户)、CES Administrator和KMS Administrator权限。同时请勿在IAM修改MRS_ECS_DEFAULT_AGENCY委托。
  • 如需使用预置的委托,请跳过创建委托步骤。如需使用自定义委托,请参考如下步骤进行创建委托(创建或修改委托需要用户具有Security Administrator权限)。
  1. 登录管理控制台。
  2. 在服务列表中选择“管理与监管 > 统一身份认证服务”。
  3. 选择“委托 > 创建委托”。
  4. 设置“委托名称”。例如:mrs_ecs_obs。
  5. “委托类型”选择“云服务”,在“云服务”中选择“弹性云服务器ECS 裸金属服务器BMS”,授权ECS或BMS调用OBS服务。
  6. “持续时间”选择“永久”并单击“下一步”。
  7. 在弹出授权页面的搜索框内,搜索“OBS OperateAccess”策略,勾选“OBS OperateAccess”策略。
  8. 单击“下一步”,选择权限范围方案,默认选择“所有资源”,单击“展开其他方案”,选择“全局服务资源”。
  9. 在弹出的提示框中单击“知道了”,开始授权。界面提示“授权成功。”,单击“完成”,委托成功创建。

步骤二:创建存算分离集群

配置存算分离支持在新建集群中配置委托实现,也可以通过为已有集群绑定委托实现。本示例以开启Kerberos认证的集群为例介绍。

新创建存算分离集群

  1. 登录MRS服务控制台。
  2. 单击“创建集群”,进入“创建集群”页面。
  3. 集群页面,选择“自定义创建”页签。
  4. 在“自定义创建”页签,填写“软件配置”参数。
    • 区域:请根据需要选择。
    • 集群名称:可以设置为系统默认名称,但为了区分和记忆,建议带上项目拼音缩写或者日期等。
    • 集群版本:请选择集群版本。
    • 集群类型:选择“分析集群”或“混合集群”并勾选所有组件。
    • 元数据:选择“本地元数据”。
  5. 单击“下一步”,并配置硬件相关参数。
    • 可用区:默认即可。
    • 虚拟私有云:默认即可。
    • 子网:默认即可。
    • 安全组:默认即可。
    • 弹性公网IP:默认即可。
    • 企业项目:默认即可。
    • 集群节点:请根据自身需求选择节点规格和数量。
  6. 单击“下一步”,并配置相关参数。
    • Kerberos认证:默认开启,请根据自身需要选择。
    • 用户名:默认为“admin”,用于登录集群管理页面。
    • 密码:设置admin用户密码。
    • 确认密码:再次输入设置的admin用户密码。
    • 登录方式:选择登录ECS节点的登录方式,本例选择密码方式。
    • 用户名:默认为“root”,用于远程登录ECS机器。
    • 密码:设置root用户密码。
    • 确认密码:再次输入设置的root用户密码。
  7. 本例以配置委托为例介绍,其他参数暂不配置,如需配置请参考高级配置(可选)

    委托:选择步骤一:创建具有访问OBS权限的ECS委托所创建的委托或MRS在IAM服务中预置的委托MRS_ECS_DEFAULT_AGENCY。

  8. 通信安全授权请勾选“确认授权”,详细信息请参见授权安全通信
  9. 单击“立即”,等待集群创建成功。

    当集群开启Kerberos认证时,需要确认是否需要开启Kerberos认证,若确认开启请单击“继续”,若无需开启Kerberos认证请单击“返回”关闭Kerberos认证后再创建集群。

为已有集群配置存算分离功能

  1. 登录MRS控制台,在导航栏选择“集群列表 > 现有集群”。
  2. 单击集群名称,进入集群详情页面。
  3. 在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步。
  4. 在集群详情页的“概览”页签,单击委托右侧的“管理委托”选择需要绑定的委托并单击“确定”进行绑定,或单击“新建委托”进入IAM控制台进行创建后再在此处进行绑定。

步骤三:创建OBS文件系统用于存放数据

大数据存算分离场景,请务必使用OBS并行文件系统,使用普通对象桶会对集群性能产生较大影响。

  1. 登录OBS控制台。
  2. 单击“并行文件系统 > 创建并行文件系统”。
  3. 填写文件系统名称,例如“mrs-word001”。

    其他参数请根据需要填写。

  4. 单击“立即创建”。
  5. 在OBS控制台并行文件系统列表中,单击文件系统名称进入详情页面。
  6. 在左侧导航栏选择“文件”,新建program、input文件夹。
    • program:请上传程序包到该文件夹。
    • input:请上传输入数据到该文件夹。

步骤四:访问OBS文件系统

  1. 用root用户登录集群Master节点,具体请参见登录集群节点
  2. 配置环境变量。

    MRS 3.x之前版本请执行:source /opt/client/bigdata_env

    MRS 3.x及之后版本请执行:source /opt/Bigdata/client/bigdata_env

  3. 验证Hadoop访问OBS。
    1. 查看文件系统mrs-word001下面的文件列表。

      hadoop fs -ls obs://mrs-word001/

    2. 返回文件列表即表示访问OBS成功。
      图1 Hadoop验证返回文件列表
  4. 验证Hive访问OBS。
    1. 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建Hive表的权限,具体请参见创建角色配置拥有对应权限的角色,参考创建用户创建用户并为用户绑定对应角色。如果当前集群未启用Kerberos认证,则无需执行此命令。

      kinit MRS集群用户

      例如,kinit hiveuser

    2. 执行Hive组件的客户端命令。

      beeline

    3. 在beeline中直接使用obs的目录进行访问。例如,执行如下命令创建Hive表并指定数据存储在mrs-word001文件系统的test_obs目录中。

      create table test_obs(a int, b string) row format delimited fields terminated by "," stored as textfile location "obs://mrs-word001/test_obs";

    4. 执行如下命令查询所有表,返回结果中存在表test_obs,即表示访问OBS成功。

      show tables;

      图2 Hive验证返回已创建的表名
    5. 使用“Ctrl + C”退出hive beeline。
  5. 验证Spark访问OBS。
    1. 执行Spark组件的客户端命令。

      spark-beeline

    2. 在spark-beeline中访问OBS,例如在obs://mrs-word001/table/目录中创建表test。

      create table test(id int) location 'obs://mrs-word001/table/';

    3. 执行如下命令查询所有表,返回结果中存在表test,即表示访问OBS成功。

      show tables;

      图3 Spark验证返回已创建的表名
    4. 使用“Ctrl + C”退出退出spark beeline。
  6. 验证Presto访问OBS。
    • 未开启Kerberos认证的普通集群
      1. 执行如下命令连接客户端。

        presto_cli.sh

      2. 在Presto客户端中执行语句创建schema,指定location为OBS路径,例如:

        CREATE SCHEMA hive.demo01 WITH (location = 'obs://mrs-word001/presto-demo002/');

      3. 在该schema中建表,该表的数据即存储在OBS文件系统内,例如:

        CREATE TABLE hive.demo.demo_table WITH (format = 'ORC') AS SELECT * FROM tpch.sf1.customer;

        图4 普通集群Presto验证返回结果
      4. 执行exit退出客户端。
    • 开启Kerberos认证的安全集群
      1. 登录MRS Manager创建一个拥有“Hive Admin Privilege”权限的角色,例如prestorole,创建角色请参考创建角色
      2. 创建一个属于“Presto”和“Hive”组的用户,同时为该用户绑定6.a中创建的角色,例如presto001,创建用户请参考创建用户
      3. 认证当前用户。

        kinit presto001

      4. 下载用户凭证。
        1. 针对MRS 3.x之前版本集群,在MRS Manager页面,选择“系统设置 > 用户管理 ”,单击新增用户所在行的“更多 > 下载认证凭据”。
          图5 下载Presto用户认证凭据
        2. 针对MRS 3.x及之后版本,在FusionInsight Manager页面,选择“系统 > 权限 > 用户”,单击新增用户所在行的“更多 > 下载认证凭据”。
      5. 解压下载的用户凭证文件,得到“krb5.conf”“user.keytab”两个文件并放入客户端目录,例如“/opt/Bigdata/client/Presto/”
      6. 执行如下命令获取用户principal。

        klist -kt /opt/Bigdata/client/Presto/user.keytab

      7. 启用Kerberos认证的集群,执行以下命令连接本集群的Presto Server。

        presto_cli.sh --krb5-config-path {krb5.conf文件路径} --krb5-principal {用户principal} --krb5-keytab-path {user.keytab文件路径} --user {presto用户名}

        • krb5.conf文件路径:请替换为6.e中设置的文件存放路径,例如“/opt/Bigdata/client/Presto/krb5.conf”
        • user.keytab文件路径:请替换为6.e中设置的文件存放路径,例如“/opt/Bigdata/client/Presto/user.keytab”
        • 用户principal:请替换为6.f中返回的结果
        • presto用户名:请替换为6.b中创建的用户名,例如“presto001”

        例如:presto_cli.sh --krb5-config-path /opt/Bigdata/client/Presto/krb5.conf --krb5-principal prest001@xxx_xxx_xxx_xxx.COM --krb5-keytab-path /opt/Bigdata/client/Presto/user.keytab --user presto001

      8. 在Presto客户端中执行语句创建schema,指定location为OBS路径,例如:

        CREATE SCHEMA hive.demo01 WITH (location = 'obs://mrs-word001/presto-demo002/');

      9. 在该schema中建表,该表的数据即存储在OBS文件系统内,例如:

        CREATE TABLE hive.demo01.demo_table WITH (format = 'ORC') AS SELECT * FROM tpch.sf1.customer;

        图6 安全集群Presto验证返回结果
      10. 执行exit退出客户端。
  7. 验证Flink访问OBS。
    1. 在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步。
    2. 用户同步完成后,在集群详情页选择“作业管理 > 添加”提交Flink作业,在“执行程序参数”中按照“--input <作业输入路径> --output <作业输出路径>”格式填写,其中作业输入路径选择OBS,输出路径请手动输入一个不存在的目录,例如obs://mrs-word001/output/,如图7所示。
      图7 添加Flink作业
    3. 在OBS控制台,进入提交作业时选择的输出路径,即可查看到输出目录已经自动创建并存放着作业执行结果,表示访问OBS成功。
      图8 Flink作业执行结果

相关参考

如需对访问OBS的权限进行控制,请参考配置MRS多用户访问OBS细粒度权限