本文介绍如何通过JindoDistCp工具,将第三方云对象存储中的数据迁移到OSS/OSS-HDFS。
前提条件
准备迁移环境并下载JindoDistCp工具,参见JindoDistCp使用说明。
已在Hadoop的
core-site.xml
文件里,配置AccessKey ID和AccessKey Secret。新增配置项详情,请参见管理配置项。JindoDistCp可以将AccessKey ID和AccessKey Secret预先写在Hadoop的
core-site.xml
文件里 ,避免使用时多次填写的问题。例如,指定OSS、OSS-HDFS、Amazon S3、COS或OBS的AccessKey ID和AccessKey Secret。以OSS为例,配置示例如下。<configuration> <property> <name>fs.oss.accessKeyId</name> <value>xxx</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>xxx</value> </property> </configuration>
拷贝数据到阿里云OSS/OSS-HDFS上
您可以使用如下命令将第三方云对象存储上的目录拷贝到OSS/OSS-HDFS上。
hadoop jar jindo-distcp-tool-${version}.jar --src s3://example-s3-bucket/data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --parallelism 10
参数 | 描述 | 示例 |
--src | 第三方云对象存储路径。 | s3://example-s3-bucket/data/ |
--dest | OSS/OSS-HDFS的目标路径。 | oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/ |
--parallelism | 任务并发大小,根据集群资源可调整。 | 10 |
拷贝增量文件
场景说明:
Distcp任务在执行期间失败,您想进行断点续传,只拷贝剩下未拷贝成功的文件。
源端文件新增了部分文件,只拷贝新增的文件。
在上一次Distcp任务完成后,使用--update参数,将src中新增或发生改变的文件和目录同步到dest上。
hadoop jar jindo-distcp-tool-${version}.jar --src s3://example-s3-bucket/data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --update --parallelism 20
设置YARN队列和带宽大小
如果您需要设置DistCp作业使用的YARN队列和带宽大小,可使用如下命令:
hadoop jar jindo-distcp-tool-${version}.jar --src s3://example-s3-bucket/data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --hadoopConf mapreduce.job.queuename=yarnQueue --bandWidth 100 --parallelism 10
参数 | 描述 |
--hadoopConf mapreduce.job.queuename=yarnQueue | 指定YARN队列的名称。 |
--bandWidth | 指定单机限流带宽的大小,单位:MB。 |
配置OSS-HDFS Endpoint
访问OSS-HDFS需要配置Endpoint(cn-xxx.oss-dls.aliyuncs.com),与OSS对象接口的Endpoint(oss-cn-xxx-internal.aliyuncs.com)不同。JindoSDK会根据配置的Endpoint访问OSS-HDFS或OSS对象接口。
使用OSS-HDFS时,推荐访问路径格式为:oss://<Bucket>.<Endpoint>/<Object>
。例如oss://mydlsbucket.cn-shanghai.oss-dls.aliyuncs.com/Test
。
这种方式在访问路径中包含OSS-HDFS的Endpoint,JindoSDK会根据路径中的Endpoint访问对应的OSS-HDFS接口。JindoSDK还支持更多的Endpoint配置方式,详情请参见阿里云OSS-HDFS服务(JindoFS服务)Endpoint配。
JindoSDK 4.4.0及以上版本默认使用域名分离的方式,数据读写域名默认使用内网标准OSS域名。如果在非阿里云内网环境执行distcp命令,则需要在Hadoop的core-site.xml
文件中配置数据流访问的公网OSS Endpoint。配置示例如下。
<configuration>
<property>
<name>fs.oss.data.endpoint</name>
<value>oss-cn-xxx.aliyuncs.com</value>
</property>
</configuration>
相关文档
如果您需要使用JindoDistCp工具的更多功能,请参见JindoDistCp使用说明。
如果您在使用过程中遇到问题,可参见JindoDistCp常见问题进行解决。