配置存算分离集群(委托方式)
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权限)。
- 登录管理控制台。
- 在服务列表中选择“管理与监管 > 统一身份认证服务”。
- 选择“委托 > 创建委托”。
- 设置“委托名称”。例如:mrs_ecs_obs。
- “委托类型”选择“云服务”,在“云服务”中选择“弹性云服务器ECS 裸金属服务器BMS”,授权ECS或BMS调用OBS服务。
- “持续时间”选择“永久”并单击“下一步”。
- 在弹出授权页面的搜索框内,搜索“OBS OperateAccess”策略,勾选“OBS OperateAccess”策略。
- 单击“下一步”,选择权限范围方案,默认选择“所有资源”,单击“展开其他方案”,选择“全局服务资源”。
- 在弹出的提示框中单击“知道了”,开始授权。界面提示“授权成功。”,单击“完成”,委托成功创建。
步骤二:创建存算分离集群
配置存算分离支持在新建集群中配置委托实现,也可以通过为已有集群绑定委托实现。本示例以开启Kerberos认证的集群为例介绍。
新创建存算分离集群:
- 登录MRS服务控制台。
- 单击“创建集群”,进入“创建集群”页面。
- 在集群页面,选择“自定义创建”页签。
- 在“自定义创建”页签,填写“软件配置”参数。
- 区域:请根据需要选择。
- 集群名称:可以设置为系统默认名称,但为了区分和记忆,建议带上项目拼音缩写或者日期等。
- 集群版本:请选择集群版本。
- 集群类型:选择“分析集群”或“混合集群”并勾选所有组件。
- 元数据:选择“本地元数据”。
- 单击“下一步”,并配置硬件相关参数。
- 可用区:默认即可。
- 虚拟私有云:默认即可。
- 子网:默认即可。
- 安全组:默认即可。
- 弹性公网IP:默认即可。
- 企业项目:默认即可。
- 集群节点:请根据自身需求选择节点规格和数量。
- 单击“下一步”,并配置相关参数。
- Kerberos认证:默认开启,请根据自身需要选择。
- 用户名:默认为“admin”,用于登录集群管理页面。
- 密码:设置admin用户密码。
- 确认密码:再次输入设置的admin用户密码。
- 登录方式:选择登录ECS节点的登录方式,本例选择密码方式。
- 用户名:默认为“root”,用于远程登录ECS机器。
- 密码:设置root用户密码。
- 确认密码:再次输入设置的root用户密码。
- 本例以配置委托为例介绍,其他参数暂不配置,如需配置请参考高级配置(可选)。
委托:选择步骤一:创建具有访问OBS权限的ECS委托所创建的委托或MRS在IAM服务中预置的委托MRS_ECS_DEFAULT_AGENCY。
- 通信安全授权请勾选“确认授权”,详细信息请参见授权安全通信。
- 单击“立即”,等待集群创建成功。
当集群开启Kerberos认证时,需要确认是否需要开启Kerberos认证,若确认开启请单击“继续”,若无需开启Kerberos认证请单击“返回”关闭Kerberos认证后再创建集群。
为已有集群配置存算分离功能:
- 登录MRS控制台,在导航栏选择“集群列表 > 现有集群”。
- 单击集群名称,进入集群详情页面。
- 在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步。
- 在集群详情页的“概览”页签,单击委托右侧的“管理委托”选择需要绑定的委托并单击“确定”进行绑定,或单击“新建委托”进入IAM控制台进行创建后再在此处进行绑定。
步骤三:创建OBS文件系统用于存放数据
大数据存算分离场景,请务必使用OBS并行文件系统,使用普通对象桶会对集群性能产生较大影响。
步骤四:访问OBS文件系统
- 用root用户登录集群Master节点,具体请参见登录集群节点。
- 配置环境变量。
MRS 3.x之前版本请执行:source /opt/client/bigdata_env
MRS 3.x及之后版本请执行:source /opt/Bigdata/client/bigdata_env
- 验证Hadoop访问OBS。
- 验证Hive访问OBS。
- 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建Hive表的权限,具体请参见创建角色配置拥有对应权限的角色,参考创建用户创建用户并为用户绑定对应角色。如果当前集群未启用Kerberos认证,则无需执行此命令。
kinit MRS集群用户
例如,kinit hiveuser
- 执行Hive组件的客户端命令。
- 在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";
- 执行如下命令查询所有表,返回结果中存在表test_obs,即表示访问OBS成功。
图2 Hive验证返回已创建的表名
- 使用“Ctrl + C”退出hive beeline。
- 如果当前集群已启用Kerberos认证,执行以下命令认证当前用户,当前用户需要具有创建Hive表的权限,具体请参见创建角色配置拥有对应权限的角色,参考创建用户创建用户并为用户绑定对应角色。如果当前集群未启用Kerberos认证,则无需执行此命令。
- 验证Spark访问OBS。
- 验证Presto访问OBS。
- 未开启Kerberos认证的普通集群
- 开启Kerberos认证的安全集群
- 登录MRS Manager创建一个拥有“Hive Admin Privilege”权限的角色,例如prestorole,创建角色请参考创建角色。
- 创建一个属于“Presto”和“Hive”组的用户,同时为该用户绑定6.a中创建的角色,例如presto001,创建用户请参考创建用户。
- 认证当前用户。
- 下载用户凭证。
- 针对MRS 3.x之前版本集群,在MRS Manager页面,选择“系统设置 > 用户管理 ”,单击新增用户所在行的“更多 > 下载认证凭据”。
图5 下载Presto用户认证凭据
- 针对MRS 3.x及之后版本,在FusionInsight Manager页面,选择“系统 > 权限 > 用户”,单击新增用户所在行的“更多 > 下载认证凭据”。
- 针对MRS 3.x之前版本集群,在MRS Manager页面,选择“系统设置 > 用户管理 ”,单击新增用户所在行的“更多 > 下载认证凭据”。
- 解压下载的用户凭证文件,得到“krb5.conf”和“user.keytab”两个文件并放入客户端目录,例如“/opt/Bigdata/client/Presto/”。
- 执行如下命令获取用户principal。
- 启用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
- 在Presto客户端中执行语句创建schema,指定location为OBS路径,例如:
CREATE SCHEMA hive.demo01 WITH (location = 'obs://mrs-word001/presto-demo002/');
- 在该schema中建表,该表的数据即存储在OBS文件系统内,例如:
CREATE TABLE hive.demo01.demo_table WITH (format = 'ORC') AS SELECT * FROM tpch.sf1.customer;
图6 安全集群Presto验证返回结果
- 执行exit退出客户端。
- 验证Flink访问OBS。
- 在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步。
- 用户同步完成后,在集群详情页选择“作业管理 > 添加”提交Flink作业,在“执行程序参数”中按照“--input <作业输入路径> --output <作业输出路径>”格式填写,其中作业输入路径选择OBS,输出路径请手动输入一个不存在的目录,例如obs://mrs-word001/output/,如图7所示。
- 在OBS控制台,进入提交作业时选择的输出路径,即可查看到输出目录已经自动创建并存放着作业执行结果,表示访问OBS成功。
图8 Flink作业执行结果
相关参考
如需对访问OBS的权限进行控制,请参考配置MRS多用户访问OBS细粒度权限。