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