MRS HADOOP/SPARK 代码访问OBS方式介绍
【摘要】 MRS HADOOP/SPARK 代码访问OBS方式介绍1 背景描述:MRS样例代码没有介绍如何访问OBS,在默认情况下使用的文件系统都是HDFS;如果访问OBS需要添加一些配置,代码使用过程中也有一些需要注意的地方2 配置OBS相关参数:需要在客户端配置文件core-site.xml里面添加以下参数:<property> <name>fs.obs.access.k...
MRS HADOOP/SPARK 代码访问OBS方式介绍
1 背景描述:
MRS样例代码没有介绍如何访问OBS,在默认情况下使用的文件系统都是HDFS;如果访问OBS需要添加一些配置,代码使用过程中也有一些需要注意的地方
2 配置OBS相关参数:
需要在客户端配置文件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>
需要注意的是,此方式设置的aksk会明文暴露下文件中,谨慎使用
如果不想要明文显示可以设置ECS代理,参考指导文档<ECS委托方式访问OBS>:https://support.huaweicloud.com/usermanual-mrs/mrs_01_0643.html
3 代码指导:
代码基础参考MRS样例代码,获取方式参考指导文档<MapReduce服务样例工程构建方式>:https://support.huaweicloud.com/devg-mrs/mrs_06_0002.html
hadoop的文件系统对象是一个抽象类:org.apache.hadoop.fs.FileSystem
常用的获取FileSystem的方式是:
FileSystem fileSystem = FileSystem.get(conf);
此方法获取到的文件系统为配置项“fs.defaultFS”指定的文件系统类型
如果我们需要的是访问OBS的文件系统则需要使用另一个方法来获取FileSystem:
FileSystem fileSystem = FileSystem.get(URI.create("obs://Bucket-Name/tmp"),conf);
此时获取到的文件系统就是对应OBS的文件系统
obs://Bucket-Name/tmp
如果地址是s3a开头,这文件系统是S3aFileSystem
如果地址是obs开头,这文件系统是OBSFileSystem
此处一般都是传递过来一个文件地址参数,然后通过这个方法来自动识别文件系统
以上是对于hdfs API操作OBS文件的连接方式
如果是MapReduce任务需要读取/写入OBS的文件,可以直接将”obs://Bucket-Name/tmp”这样的地址传入,代码可以自动识别到文件系统并获取相应的文件,代码参考样例代码:
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
如果是spark任务需要读取/写入OBS的文件,使用以下方法可以自动识别到相应的文件系统:
textFile(args[0])–读取文件
saveAsTextFile(args[1])–保存文件
saveAsHadoopFile(args[2])—指定格式保存文件
4 案例说明
例如我们使用MapReduce的wordcount任务:
访问hdfs上的文件进行计算启动命令:
yarn jar hadoop-mapreduce-examples-*.jar wordcount /tmp/input /tmp/output
如果需要访问OBS,则可以改成:
yarn jar hadoop-mapreduce-examples-*.jar wordcount obs://Bucket-Name/tmp/input obs://Bucket-Name/tmp/output
spark任务也是类似的操作,以spark自带样例为例:
spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.JavaWordCount spark-examples_*.jar /tmp/input
如果需要访问OBS,则可以改成:
spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.JavaWordCount spark-examples_*.jar obs://Bucket-Name/tmp/input
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
66612020/08/05 05:31:101楼编辑删除举报