使用JindoDistCp工具迁移第三方云对象存储数据到OSS/OSS-HDFS

本文介绍如何通过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>

相关文档