本文介绍如何使用阿里云Jindo DistCp在OSS-HDFS服务不同Bucket之间迁移数据。
前提条件
- JDK 1.8及以上版本。
- 如果您使用的是自建ECS集群,需要具备Hadoop2.7+或Hadoop3.x环境以及进行MapReduce作业的能力。
- 如果您使用的是阿里云E-MapReduce,需使用EMR-5.6.0及后续版本或EMR-3.40.0及后续版本。
背景信息
阿里云Jindo DistCp(分布式文件拷贝工具)用于大规模集群内部或集群之间拷贝文件。Jindo DistCp使用MapReduce实现文件分发,错误处理和恢复,把文件和目录的列表作为MapReduce任务的输入,每个任务会完成源列表中部分文件的拷贝。Jindo
DistCp全量支持HDFS之间、HDFS与OSS之间、HDFS与OSS-HDFS之间以及OSS-HDFS之间数据拷贝场景,提供多种个性化拷贝参数和多种拷贝策略。
使用阿里云Jindo DistCp迁移数据时,有以下优势:
- 效率高,在测试场景中最高可达到1.59倍的加速。
- 基本功能丰富,提供多种拷贝方式和场景优化策略。
- 深度结合OSS,对文件提供归档、压缩等操作。
- 实现No-Rename拷贝,保证数据一致性。
- 场景全面,可完全替代Hadoop DistCp,目前支持Hadoop2.7+和Hadoop3.x。
步骤一:下载JAR包
JindoData 4.x.x版本
步骤二:配置OSS-HDFS服务的AccessKey
您可以通过以下任意方式配置OSS-HDFS服务的AccessKey:
- 在示例命令中配置AccessKey
例如,在将OSS-HDFS中srcbucket的数据迁移到destbucket的示例中结合–hadoopConf选项配置AccessKey。
hadoop jar jindo-distcp-tool-${version}.jar --src oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --dest oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret --parallelism 10
- 通过配置文件预先配置AccessKey
将OSS-HDFS的fs.oss.accessKeyId、fs.oss.accessKeySecret预先配置在Hadoop的core-site.xml文件里。示例命令如下:
fs.oss.accessKeyId LTAI5t7h6SgiLSganP2m**** fs.oss.accessKeySecret KZo149BD9GLPNiDIEmdQ7dyNKG****
步骤三:配置OSS-HDFS服务Endpoint
访问OSS-HDFS服务时需要配置Endpoint。推荐访问路径格式为oss://./
,例如oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampleobject.txt
。配置完成后,JindoSDK会根据访问路径中的Endpoint访问对应的OSS-HDFS服务接口。
您还可以通过其他方式配置OSS-HDFS服务Endpoint,且不同方式配置的Endpoint存在生效优先级。更多信息,请参见配置Endpoint的其他方式。
步骤四:在OSS-HDFS服务不同Bucket之间全量迁移数据
以下以Jindo DistCp 4.4.0版本为例,您可以根据实际环境替换对应的版本号。
使用相同的AccessKey将同一个Region下Bucket A的数据迁移至Bucket B
- 命令格式
hadoop jar jindo-distcp-tool-${version}.jar --src oss://bucketname.region.oss-dls.aliyuncs.com/ --dest oss://bucketname.region.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.accessKeyId=yourkey --hadoopConf fs.oss.accessKeySecret=yoursecret --parallelism 10
参数及选项说明如下:
参数及选项 说明 示例 –src 待迁移或拷贝的OSS-HDFS服务中源Bucket的完整路径。 oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ –dest OSS-HDFS中存放迁移或拷贝数据的目标Bucket的完整路径。 oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ –hadoopConf 访问OSS-HDFS服务的AccessKey ID和AccessKey Secret。 - AccessKey ID
LTAI5t7h6SgiLSganP2m****
- AccessKey Secret
KZo149BD9GLPNiDIEmdQ7dyNKG****
–parallelism 根据集群资源调整任务并发数。 10 - AccessKey ID
- 使用示例
使用相同的AccessKey将华东1(杭州)地域下srcbucket的数据迁移至destbucket。
hadoop jar jindo-distcp-tool-4.4.0.jar --src oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --dest oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.accessKeyId=LTAI5t7h6SgiLSganP2m**** --hadoopConf fs.oss.accessKeySecret=KZo149BD9GLPNiDIEmdQ7dyNKG**** --parallelism 10
使用不同的AccessKey将Region A下Bucket A的数据迁移至另一个Region下的Bucket B
- 命令格式
hadoop jar jindo-distcp-tool-${version}.jar --src oss://srcbucketname.region.oss-dls.aliyuncs.com/ --dest oss://destbucketname.region.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.bucket.srcbucketname.accessKeyId=yourkey --hadoopConf fs.oss.bucket.srcbucketname.accessKeySecret=yoursecret --hadoopConf fs.oss.bucket.destbucketname.accessKeyId=yourkey --hadoopConf fs.oss.bucket.destbucketname.accessKeySecret=yoursecret --parallelism 10
参数及选项说明如下:
参数及选项 说明 示例 –src 待迁移或拷贝的OSS-HDFS服务中源Bucket的完整路径。 oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ –dest OSS-HDFS中存放迁移或拷贝数据的目标Bucket的完整路径。 oss://destbucket.cn-shanghai.oss-dls.aliyuncs.com/ –hadoopConf 访问OSS-HDFS服务中源Bucket以及目标Bucket的AccessKey ID和AccessKey Secret。 - 访问源Bucket的AccessKey
AccessKey IDLTAI5t7h6SgiLSganP2m****
AccessKey Secret
KZo149BD9GLPNiDIEmdQ7dyNKG****
- 访问目标Bucket的AccessKey
AccessKey IDLTAI5t8K9BtVqPSxjdDX****
AccessKey Secret
5xwFyoOjgKmt05VCdqzrwBdAwm****
–parallelism 根据集群资源调整任务并发数。 10 - 访问源Bucket的AccessKey
- 使用示例
将华东1(杭州)地域OSS-HDFS服务中的srcbucket的数据迁移至华东2(上海)地域的destbucket,且这两个Bucket需使用不同的AccessKey进行访问。
hadoop jar jindo-distcp-tool-4.4.0.jar --src oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --dest oss://destbucket.cn-shanghai.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.bucket.srcbucket.accessKeyId=LTAI5t7h6SgiLSganP2m**** --hadoopConf fs.oss.bucket.srcbucket.accessKeySecret=KZo149BD9GLPNiDIEmdQ7dyNKG**** --hadoopConf --hadoopConf fs.oss.bucket.destbucket.accessKeyId=LTAI5t8K9BtVqPSxjdDX**** --hadoopConf fs.oss.bucket.destbucket.accessKeySecret=5xwFyoOjgKmt05VCdqzrwBdAwm**** --parallelism 10
(可选)在OSS-HDFS服务不同Bucket之间增量迁移数据
如果您仅希望拷贝在上一次全量迁移或拷贝后源路径下新增的数据,此时您可以结合–update选项完成数据的增量迁移或拷贝。
例如,您需要使用相同的AccessKey将华东1(杭州)地域下srcbucket的数据增量迁移至destbucket。
hadoop jar jindo-distcp-tool-4.4.0.jar --src oss://srcbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --dest oss://destbucket.cn-hangzhou.oss-dls.aliyuncs.com/ --hadoopConf fs.oss.accessKeyId=LTAI5t7h6SgiLSganP2m**** --hadoopConf fs.oss.accessKeySecret=KZo149BD9GLPNiDIEmdQ7dyNKG**** --update --parallelism 10
更多参考
关于Jindo DistCp的其他使用场景,请参见Jindo DistCp使用说明。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/159531.html