配置存算分离集群(AKSK方式)
MRS支持使用obs://的方式对接OBS服务,当前主要支持的组件为Hadoop、Hive、Spark、Presto、Flink。其中HBase组件使用obs://的方式对接OBS服务暂不支持。
MRS提供如下访问OBS的配置方式,请选择其中一种配置即可(推荐使用委托方式):
- 通过为MRS集群绑定ECS委托方式访问OBS,避免了AK/SK直接暴露在配置文件中的风险,具体请参考配置存算分离集群(委托方式)。
- 在MRS集群中配置AK/SK,AK/SK会明文暴露在配置文件中,请谨慎使用,具体请参考本章节。
- 为了提高数据写入性能,可以在Manager页面选择“集群 > 服务 > 需要修改的服务名称 > 配置”,修改对应服务的配置参数“fs.obs.buffer.dir”的值为数据盘目录。
- 大数据存算分离场景,请务必使用OBS并行文件系统(),使用普通对象桶会对集群性能产生较大影响。
- 在MRS 3.2.0-LTS.1及后续版本中,MRS集群内组件默认支持数据防误删策略,即组件用户删除的文件数据并不会直接被删除,而是会保存到OBS文件系统内的用户回收站目录中。
为节省OBS使用空间,需参考配置组件数据回收站清理策略配置定时自动清理OBS回收站目录中的文件数据。
- 配置文件中包含认证密码信息可能存在安全风险,建议当前场景执行完毕后删除相关配置文件或加强安全管理。
- 命令中如果携带认证密码信息可能存在安全风险,在执行命令前建议关闭系统的history命令记录功能,避免信息泄露。
Hadoop访问OBS
- 在HDFS客户端的“客户端安装目录/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>
如果使用distcp等需要提交作业到Yarn的命令,需要在MRS客户端的Yarn目录($client_home/Yarn/config)中同步修改core-site.xml文件,增加以上内容。
在文件中设置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
- 登录服务配置页面。
登录FusionInsight Manager页面,具体请参见访问FusionInsight Manager,选择“集群 > 服务 > Hive > 配置”。
- 将“基础配置”切换为“全部配置”。
- 搜索“fs.obs.access.key”和“fs.obs.secret.key”参数,并分别配置为OBS的AK和SK。
若当前集群中搜索不到如上两个参数,请在左侧导航选择“Hive > 自定义”,在自定义参数“core.site.customized.configs”中增加如上两个参数。
- 保存配置并重启Hive服务。
- 在beeline中直接使用obs的目录进行访问。例如,执行如下命令创建Hive表并指定数据存储在test-bucket文件系统的test_obs目录中。
create table 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配置。
- MRS 3.3.0-LTS及之后的版本中,Spark2x服务改名为Spark,服务包含的角色名也有差异,例如JobHistory2x变更为JobHistory。相关涉及服务名称、角色名称的描述和操作请以实际版本为准。
- spark-beeline和spark-sql
可使用spark-beeline或spark-sql登录Spark客户端执行以下命令配置AK、SK信息访问OBS:
set fs.obs.access.key=AK
set fs.obs.secret.key=SK
set fs.obs.endpoint=OBS Endpoint
- spark-beeline
spark-beeline也可以通过在Manager中配置服务参数实现访问OBS。操作如下:
- 登录服务配置页面。
登录FusionInsight Manager页面,具体请参见访问FusionInsight Manager,选择“集群 > 服务 > Spark2x > 配置”。
- 将“基础配置”切换为“全部配置”。
- 选择“JDBCServer > OBS”配置fs.obs.access.key、fs.obs.secret.key参数。
若当前集群中没有如上两个参数,请在左侧导航选择“JDBCServer > 自定义”,在自定义参数“spark.core-site.customized.configs”中增加如上两个参数。
图1 自定义添加OBS参数
- 保存配置并重启Spark服务。
- 在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和spark-submit都可通过修改“core-site.xml”配置文件访问OBS,即修改“客户端安装目录/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>
Flink访问OBS
fs.obs.access.key: ak fs.obs.secret.key: sk fs.obs.endpoint: OBS Endpoint
在文件中设置AK/SK会明文暴露在配置文件中,请谨慎使用。
添加配置后无需手动添加AK/SK、endpoint就可以直接访问OBS上的数据。