本文为您介绍如何使用阿里云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常见问题解决。