MRS支持使用 obs:// 的方式对接OBS服务,当前主要支持的组件为Hadoop、Hive、Spark、Presto、Flink。其中HBase组件使用 obs:// 的方式对接OBS服务暂不支持。
MRS提供如下访问OBS的配置方式,请选择其中一种配置即可(推荐使用委托方式):
- 通过为MRS集群绑定ECS委托方式访问OBS,避免了AK/SK直接暴露在配置文件中的风险,具体请参考配置存算分离集群(委托方式)。
- 在MRS集群中配置AK/SK,AK/SK会明文暴露在配置文件中,请谨慎使用,具体请参考本章节。
说明
为了提高数据写入性能,可以修改对应服务的配置参数fs.obs.buffer.dir的值为数据盘目录。
大数据存算分离场景,请务必使用OBS并行文件系统,使用普通对象桶会对集群性能产生较大影响。
Hadoop访问OBS
- 在MRS客户端的HDFS目录($client_home/
HDFS/hadoop/etc/hadoop)中修改core-site.xml文件,增加如下内容。
<property>
<name>fs.obs.access.key</name>
<value>ak</value>
</property>
<property>
<name>fs.obs.secret.key</name>
<value>sk</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs endpoint</value>
</property>
须知
在文件中设置AK/SK会明文暴露在配置文件中,请谨慎使用。
添加配置后无需手动添加AK/SK、endpoint就可以直接访问OBS上的数据。例如执行如下命令查看文件系统obs-test下面的文件夹test_obs_orc的文件列表。
hadoop fs -ls "obs://obs-test/test_obs_orc"
- 每次在命令行中手动添加AK/SK、endpoint访问OBS上的数据。
hadoop fs -Dfs.obs.endpoint=xxx -Dfs.obs.access.key=xx -Dfs.obs.secret.key=xx -ls"obs://obs-test/ test_obs_orc"
Hive访问OBS
1.登录服务配置页面。
- 针对MRS 3.x之前版本,登录集群详情页面,选择“组件管理 > Hive > 服务配置”。
- 针对MRS 3.x及之后版本,登录FusionInsight Manager页面,具体请参见访问FusionInsight Manager(MRS 3.x及之后版本),选择“集群 > 服务 > Hive > 配置”。
2.将“基础配置”切换为“全部配置”。
3.搜索“fs.obs.access.key”和“fs.obs.secret.key”参数,并分别配置为OBS的AK和SK。
若当前集群中搜索不到如上两个参数,请在左侧导航选择“Hive > 自定义”,在自定义参数“core.site.customized.configs”中增加如上两个参数。
4.单击“保存配置”,并勾选“重新启动受影响的服务或实例。”重启Hive服务。
5.在beeline中直接使用obs的目录进行访问。例如,执行如下命令创建Hive表并指定数据存储在test-bucket文件系统的test_obs目录中。
createtable test_obs(a int, b string) row format delimited fields terminated by "," stored as textfile location"obs://test-bucket/test_obs";
Spark访问OBS
说明由于SparkSQL依赖Hive,所以在Spark上配置OBS时,需要同时修改Hive访问OBS的OBS配置。
- spark-beeline和spark-sql
可以通过在shell中增加如下OBS的属性实现访问OBS。
set fs.obs.endpoint=xxx
set fs.obs.access.key=xxx
set fs.obs.secret.key=xxx
- spark-beeline
spark-beeline也可以通过在Manager中配置服务参数实现访问OBS。操作如下:
1.登录服务配置页面。
- 针对MRS 3.x之前版本,登录集群详情页面,选择“组件管理 > Spark服务配置”。
- 针对MRS 3.x及之后版本,登录FusionInsight Manager页面,具体请参见访问FusionInsightManager(MRS3.x及之后版本),选择“集群 > 服务 > Spark2x > 配置”。
2.将“基础配置”切换为“全部配置”。
3.选择“JDBCServer > OBS”配置fs.obs.access.key、fs.obs.secret.key参数。
若当前集群中没有如上两个参数,请在左侧导航选择“JDBCServer > 自定义”,在自定义参数“spark.core-site.customized.configs”中增加如上两个参数。
详见下图: 自定义添加OBS参数
4.单击“保存配置”,并勾选“重新启动受影响的服务或实例。”重启Spark服务。
5.在spark-beeline中访问OBS,例如访问obs://obs-demo-input/table/目录:
create table test(id int) location 'obs://obs-demo-input/table/';
- spark-sql和spark-submit
spark-sql也可以通过修改core-site.xml配置文件实现访问OBS。
使用spark-sql和使用spark-submit提交任务访问OBS时,配置文件修改方法一致。
修改MRS客户端中Spark配置文件夹($client_home/Spark/spark/conf)中的core-site.xml,增加如下内容:
<property>
<name>fs.obs.access.key</name>
<value>ak</value>
</property>
<property>
<name>fs.obs.secret.key</name>
<value>sk</value>
</property>
<property>
<name>fs.obs.endpoint</name>
<value>obs endpoint</value>
</property>
Presto访问OBS
1.登录集群详情页面,选择“组件管理 > Presto > 服务配置”。
2.将“基础配置”切换为“全部配置”。
3.搜索并配置如下参数。
- fs.obs.access.key配置为用户AK
- fs.obs.secret.key配置为用户SK
若当前集群中搜索不到如上两个参数,请在左侧导航选择“Presto > Hive”,在自定义参数“core.site.customized.configs”中增加如上两个参数。
4.单击“保存配置”,并勾选“重新启动受影响的服务或实例。”重启Presto服务。
5.选择“组件管理 > Hive > 服务配置”。
6..将“基础配置”切换为“全部配置”。
7.搜索并配置如下参数。
- fs.obs.access.key配置为用户AK
- fs.obs.secret.key配置为用户SK
8.单击“保存配置”,并勾选“重新启动受影响的服务或实例。”重启Hive服务。
9.在Presto客户端中执行语句创建schema,指定location为OBS路径,例如:
CREATE SCHEMA hive.demo WITH (location = 'obs://obs-demo/presto-demo/');
- 在该schema中建表,该表的数据即存储在OBS文件系统内,例如:
CREATE TABLE hive.demo.demo_table WITH (format = 'ORC') AS SELECT * FROM tpch.sf1.customer;
Flink访问OBS
在MRS客户端的Flink配置文件“客户端安装路径/Flink/flink/conf/flink-conf.yaml”中,增加如下内容。
fs.obs.access.key:ak
fs.obs.secret.key: sk
fs.obs.endpoint: obs endpoint
须知
在文件中设置AK/SK会明文暴露在配置文件中,请谨慎使用。
添加配置后无需手动添加AK/SK、endpoint就可以直接访问OBS上的数据。