本文为您介绍如何使用阿里云JindoDistCp从HDFS迁移数据到OSS/OSS-HDFS。
前提条件
已根据JindoDistCp使用说明进行环境适配和工具包下载。
注意事项
JindoSDK 4.4.0及以上版本默认使用域名分离的方式,数据读写域名默认使用内网标准OSS域名,如果在非阿里云内网环境执行distcp命令,则需要在Hadoop-Common的core-site.xml中配置数据流访问的公网OSS Endpoint。
<configuration>
    <property>
        <name>fs.oss.data.endpoint</name>
        <value>oss-cn-xxx.aliyuncs.com</value>
    </property>
</configuration>操作步骤
- 在EMR控制台配置OSS/OSS-HDFS的AccessKey。 - 在Hadoop-Common服务的core-site.xml页签,新增以下配置项,以避免使用时多次填写的问题。新增配置项的具体操作,请参见管理配置项。 - 参数 - 说明 - fs.oss.accessKeyId - OSS/OSS-HDFS的AccessKey ID。 - fs.oss.accessKeySecret - OSS/OSS-HDFS的AccessKey Secret。 
- 拷贝数据到阿里云OSS/OSS-HDFS上。 - 登录集群,详情请参见登录集群。 
- 进入 - /opt/apps/JINDOSDK/jindosdk-current/tools目录。- 在该目录下获取 - jindo-distcp-tool-${version}.jar完整的包名。例如,jindo-distcp-tool-4.6.11.jar。
- 您可以使用如下命令将HDFS上的目录及数据拷贝到OSS/OSS-HDFS上。 - hadoop jar jindo-distcp-tool-${version}.jar --src /data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --parallelism 10- 参数 - 描述 - 示例 - --src - HDFS的源路径。 - /data - --dest - OSS/OSS-HDFS的目标路径。 说明- 使用OSS-HDFS时,推荐访问路径格式为 - oss://<Bucket>.<Endpoint>/<Object>。例如,- oss://mydlsbucket.cn-shanghai.oss-dls.aliyuncs.com/Test。JindoSDK还支持更多Endpoint配置方式,详情请参见阿里云OSS-HDFS服务(JindoFS 服务)Endpoint配置。- OSS:oss://destBucket/ 
- OSS-HDFS:oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/ 
 - --parallelism - 任务并发大小,根据集群资源可调整。 - 10 
 
高阶用法
- 增量拷贝文件 - 如果JindoDistCp任务因为各种原因中间失败了,而此时您想进行断点续传,只Copy剩下未Copy成功的文件,或者源端文件新增了部分文件,此时需要在上一次JindoDistCp任务完成后,使用 - --update命令,获得增量的文件列表。- hadoop jar jindo-distcp-tool-${version}.jar --src /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 /data --dest oss://destBucket.cn-xxx.oss-dls.aliyuncs.com/dir/ --hadoopConf mapreduce.job.queuename=yarnQueue --bandWidth 100 --parallelism 10- --hadoopConf mapreduce.job.queuename:指定YARN队列的名称。
- --bandWidth:指定单机限流带宽的大小,单位MB。
 
相关文档
如果您在使用过程中遇到问题,可以参见JindoDistCp常见问题解决。