【OSS】从HDFS迁移数据到OSS

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,标准 - 同城冗余存储 20GB 3个月
对象存储OSS,敏感数据保护2.0 200GB 1年
简介: 本文介绍如何使用阿里云Jindo DistCp从HDFS迁移数据到OSS。

背景信息


在传统大数据领域,HDFS经常作为大规模数据的底层存储。在进行数据迁移、数据拷贝的场景中,最常用的是Hadoop自带的DistCp工具。但是该工具不能很好利用对象存储OSS的特性,导致效率低下并且不能保证数据一致性。此外,该工具提供的功能选项也比较简单,不能很好的满足用户的需求。

阿里云Jindo DistCp(分布式文件拷贝工具)是用于大规模集群内部或集群之间拷贝文件的工具。它使用MapReduce实现文件分发,错误处理和恢复,把文件和目录的列表作为map/reduce任务的输入,每个任务会完成源列表中部分文件的拷贝。全量支持HDFS之间、HDFS与OSS之间、以及OSS之间的数据拷贝场景,提供多种个性化拷贝参数和多种拷贝策略。

相对于Hadoop DistCp,使用阿里云Jindo DistCp从HDFS迁移数据到OSS具有以下优势:

  • 效率高,在测试场景中最高可达到1.59倍的加速。
  • 基本功能丰富,提供多种拷贝方式和场景优化策略。
  • 深度结合OSS,对文件提供直接归档和低频、压缩等操作。
  • 实现No-Rename拷贝,保证数据一致性。
  • 场景全面,可完全替代Hadoop DistCp,目前支持Hadoop2.7+和Hadoop3.x。


前提条件


  • 如果您使用的是自建ECS集群,需要具备Hadoop2.7+或Hadoop3.x环境以及进行MapReduce作业的能力。
  • 如果您使用的是阿里云E-MapReduce:
  • 对于EMR3.28.0/bigboot2.7.0及以上的版本,可以通过Shell命令的方式使用Jindo DistCp。详情请参见Jindo DistCp使用说明
  • 对于EMR3.28.0以下的版本,可能会存在一定的兼容性问题,您可以通过提交工单申请处理。


步骤1:下载JAR包



步骤2:配置OSS的访问密钥AccessKey


您可以通过以下任意方式配置AccessKey:

  • 在命令中指定--key--secret--endPoint参数选项来指定AccessKey。示例命令如下:
hadoop jar jindo-distcp-2.7.3.jar --src /data/incoming/example_file --dest oss://example_folder/example_file --key yourAccessKeyId --secret yourAccessKeySecret --endPoint oss-cn-hangzhou.aliyuncs.com
  • --src:指定源文件路径,该示例为/data/incoming/example_file
  • --dest:指定目标文件路径,该示例为oss://example_folder/example_file
  • --key:您的AccessKey ID。关于AccessKey ID的介绍请参见创建AccessKey
  • --secret:您的AccessKey Secret。关于AccessKey Secret的介绍请参见创建AccessKey
  • --endPoint:目标文件的Bucket所在地域(Region)对应的访问域名(Endpoint),该示例为oss-cn-hangzhou.aliyuncs.com。关于OSS支持的地域和对应的访问域名列表信息,请参见访问域名和数据中心


  • 将OSS的--key--secret--endPoint预先配置在Hadoop的core-site.xml文件里。配置如下:
<configuration>
    <property>
        <name>fs.jfs.cache.oss-accessKeyId</name>
        <value>yourAccessKeyId</value>
    </property>
    <property>
        <name>fs.jfs.cache.oss-accessKeySecret</name>
        <value>yourAccessKeySecret</value>
    </property>
    <property>
        <name>fs.jfs.cache.oss-endpoint</name>
        <value>Endpoint</value>
    </property>
</configuration>



步骤3:设置相关参数

Jindo DistCp提供多种实用功能及其对应的参数选择。参数含义及其示例如下表所示。详细的使用方法和完整的命令示例请参见Jindo DistCp使用指南

参数 是否必须 含义 示例
--src 指定拷贝的源路径。 --src oss://exampleBucket/sourceDir
--dest 指定拷贝的目标路径 --dest oss://exampleBucket/destDir
--parallelism 指定拷贝的任务并行度,可根据集群资源调节。 --parallelism 10
--policy 指定拷贝到OSS后的文件类型。取值:
  • archive(归档)
  • ia(低频)
--policy archive
--srcPattern 指定正则表达式来选择或者过滤需要拷贝的文件。您可以编写自定义的正则表达式来完成过滤操作,正则表达式必须为全路径正则匹配。 拷贝以.log结尾的文件:

--srcPattern .*\.log

--deleteOnSuccess 指定是否在拷贝完成后删除源路径下的文件。 --deleteOnSuccess
--outputCodec 指定拷贝文件按何种方式压缩。当前版本支持编解码器gzip、gz、lzo、lzop和snappy,以及关键字none和keep,含义如下:
  • none:保存为未压缩的文件。如果文件已压缩,则Jindo DistCp会将其解压缩。
  • keep(默认):不更改文件压缩形态,按原样复制。
--outputCodec gzip
srcPrefixesFile 指定需要拷贝的文件列表,列表里文件以src路径作为前缀。 --srcPrefixesFile file:///opt/folders.txt
--outputManifest 指定在dest目录下生成一个gzip压缩的文件,记录已完成拷贝的文件信息。 --outputManifest=manifest-2020-04-17.gz
--requirePreviousManifest 指定本次拷贝是否需要读取之前已拷贝的文件信息。取值:
  • false:不读取,拷贝全量数据。
  • true:读取,仅拷贝增量数据。
--requirePreviousManifest=false
--previousManifest 指定本次拷贝需要读取之前已拷贝文件的信息,完成增量更新。 --previousManifest=oss://exampleBucket/manifest-2020-04-16.gz
--copyFromManifest 从已完成的Manifest文件中进行拷贝,通常和--previousManifest配合使用。 --previousManifest oss://exampleBucket/manifest-2020-04-16.gz --copyFromManifest
--groupBy 指定正则表达式将符合规则的文件进行聚合,和targetSize选项配合使用。 --groupBy='.*/([a-z]+).*.txt'
--targetSize 指定聚合后的文件大小阈值,单位为MB。 --targetSize=10
--enableBalancePlan 执行策略,适用于数据量差异不大的场景。 --enableBalancePlan
--enableDynamicPlan 执行策略,适用于数据量差异较大的场景,例如大文件和小文件混合的场景。 --enableDynamicPlan
--enableTransaction 执行策略,保证Job级别的一致性,默认是Task级别 --enableTransaction
--diff 对比策略,查看本次拷贝是否完成全部文件拷贝,未完成会生成文件列表。 --diff
--key 指定OSS访问的AccessKey ID。 --key yourAccessKeyId
--secret 指定OSS访问的AccessKey Secret。 --secret yourAccessKeySecret
--endPoint 指定OSS访问的地域信息。 --endPoint oss-cn-hangzhou.aliyuncs.com
--cleanUpPending 清理OSS残留文件,这可能会花费一定的时间。 --cleanUpPending
相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
相关文章
|
6月前
|
存储 人工智能 Kubernetes
AI 场景深度优化!K8s 集群 OSSFS 2.0 存储卷全面升级,高效访问 OSS 数据
阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,是用户在云上存储的高性价比选择…
|
3月前
|
存储 监控 调度
阿里云对象存储OSS之间进行数据转移教程
讲解如何在阿里云对象存储OSS之间进行跨账号、跨地域、以及同地域内的数据迁移,包括数据迁移之前的准备工作和实施数据迁移以及一些后续操作
|
3月前
|
存储 安全 数据管理
服务器违规资源被删,数据定时备份OSS 云存储才是 “救命稻草”
在数字化时代,数据已成为企业与个人的核心资产。然而,服务器违规、硬件故障等问题频发,导致数据丢失、业务中断,甚至造成不可挽回的损失。为保障数据安全与业务连续性,定时备份至关重要。阿里云国际站OSS提供高效、可靠的云存储解决方案,支持自动定时备份,帮助用户轻松应对数据风险。本文详解OSS备份操作步骤与注意事项,助你为数据穿上“防护甲”,实现安全无忧存储。
|
6月前
|
存储 人工智能 测试技术
AI 场景深度优化!K8s 集群 OSSFS 2.0 存储卷全面升级,高效访问 OSS 数据
OSSFS 2.0通过轻量化协议设计、协程化技术及FUSE3低级API重构,实现大文件顺序读写与小文件高并发加载的显著提升,在实际测试中表现出高达数十倍的吞吐量增长。适用于机器学习训练、推理等对高带宽低延迟要求严苛的场景,同时支持静态和动态挂载方式,方便用户在ACK集群中部署使用。
705 34
|
8月前
|
存储 Ubuntu 数据管理
使用s3cmd 2.x 与 Cyberduck 管理在 DigitalOcean Spaces 对象存储中的数据
通过 `s3cmd` 2.x 和 Cyberduck,你可以轻松管理 DigitalOcean Spaces 中的数据。`s3cmd` 提供了强大的命令行操作能力,适合脚本化和自动化任务,而 Cyberduck 提供了直观的图形界面,便于日常手动操作。掌握这两种工具的使用方法,将极大提高你的数据管理效率。希望本文能帮助你更好地使用 DigitalOcean Spaces。
189 7
|
1月前
|
存储 人工智能 Cloud Native
阿里云渠道商:OSS与传统存储系统的差异在哪里?
本文对比传统存储与云原生对象存储OSS的架构差异,涵盖性能、成本、扩展性等方面。OSS凭借高持久性、弹性扩容及与云服务深度集成,成为大数据与AI时代的优选方案。
|
3月前
|
存储 运维 安全
阿里云国际站OSS与自建存储的区别
阿里云国际站对象存储OSS提供海量、安全、低成本的云存储解决方案。相比自建存储,OSS具备易用性强、稳定性高、安全性好、成本更低等优势,支持无限扩展、自动冗余、多层防护及丰富增值服务,助力企业高效管理数据。
|
3月前
|
存储 域名解析 前端开发
震惊!不买服务器,还可以用阿里云国际站 OSS 轻松搭建静态网站
在数字化时代,利用阿里云国际站OSS可低成本搭建静态网站。本文详解OSS优势及步骤:创建Bucket、上传文件、配置首页与404页面、绑定域名等,助你快速上线个人或小型业务网站,操作简单,成本低廉,适合初学者与中小企业。
|
机器学习/深度学习 人工智能 专有云
人工智能平台PAI使用问题之怎么将DLC的数据写入到另一个阿里云主账号的OSS中
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。

热门文章

最新文章

下一篇
oss云网关配置