tencent cloud

对象存储

动态与公告
产品动态
产品公告
产品简介
产品概述
功能概览
应用场景
产品优势
基本概念
地域和访问域名
规格与限制
产品计费
计费概述
计费方式
计费项
免费额度
计费示例
查看和下载账单
欠费说明
常见问题
快速入门
控制台快速入门
COSBrowser 快速入门
用户指南
创建请求
存储桶
对象
数据管理
批量处理
全球加速
监控与告警
运维中心
数据处理
内容审核
智能工具箱
数据工作流
应用集成
工具指南
工具概览
环境安装与配置
COSBrowser 工具
COSCLI 工具
COSCMD 工具
COS Migration 工具
FTP Server 工具
Hadoop 工具
COSDistCp 工具
HDFS TO COS 工具
GooseFS-Lite 工具
在线辅助工具
自助诊断工具
实践教程
概览
访问控制与权限管理
性能优化
使用 AWS S3 SDK 访问 COS
数据容灾备份
域名管理实践
图片处理实践
COS 音视频播放器实践
工作流实践
数据直传
内容审核实践
数据安全
数据校验
大数据实践
COS 成本优化解决方案
在第三方应用中使用 COS
迁移指南
本地数据迁移至 COS
第三方云存储数据迁移至 COS
以 URL 作为源地址的数据迁移至 COS
COS 之间数据迁移
Hadoop 文件系统与 COS 之间的数据迁移
数据湖存储
云原生数据湖
元数据加速
数据加速器 GooseFS
数据处理
数据处理概述
图片处理
媒体处理
内容审核
文件处理
文档处理
故障处理
获取 RequestId 操作指引
通过外网上传文件至 COS 缓慢
访问 COS 时返回403错误码
资源访问异常
POST Object 常见异常
API 文档
简介
公共请求头部
公共响应头部
错误码
请求签名
操作列表
Service 接口
Bucket 接口
Object 接口
批量处理接口
数据处理接口
任务与工作流
内容审核接口
云查毒接口
SDK 文档
SDK 概览
准备工作
Android SDK
C SDK
C++ SDK
.NET(C#) SDK
Flutter SDK
Go SDK
iOS SDK
Java SDK
JavaScript SDK
Node.js SDK
PHP SDK
Python SDK
React Native SDK
小程序 SDK
错误码
鸿蒙(Harmony) SDK
终端 SDK 质量优化
安全与合规
数据容灾
数据安全
访问管理
常见问题
热门问题
一般性问题
计费计量问题
域名合规问题
存储桶配置问题
域名和 CDN 问题
文件操作问题
日志监控问题
权限管理问题
数据处理问题
数据安全问题
预签名 URL 问题
SDK 类问题
工具类问题
API 类问题
服务协议
Service Level Agreement
隐私政策
数据处理和安全协议
联系我们
词汇表
文档对象存储数据湖存储元数据加速数据迁移及同步将 HDFS 数据迁移到已开启元数据加速功能的存储桶

将 HDFS 数据迁移到已开启元数据加速功能的存储桶

PDF
聚焦模式
字号
最后更新时间: 2024-01-06 11:17:58

简介

元数据加速器是由腾讯云对象存储(Cloud Object Storage,COS)服务提供的高性能文件系统功能。元数据加速器底层采用了云 HDFS 卓越的元数据管理功能,支持用户通过文件系统语义访问对象存储服务,系统设计指标可以达到百 GB 级别带宽、10万级 QPS 以及 ms 级延迟。存储桶在开启元数据加速器后,可以广泛应用于大数据、高性能计算、机器学习、AI 等场景。有关元数据加速器的详细介绍,请参见 元数据加速器
通过元数据加速服务,COS 提供了 Hadoop 文件系统的语义,因此利用 Hadoop Distcp 工具 可以方便地在对象存储 COS 与其他 Hadoop 文件系统之间进行双向的数据迁移,本文重点介绍如何通过 Hadoop Distcp 工具将本地 HDFS 中的文件搬迁到 COS 元数据加速存储桶中。

迁移环境准备

迁移工具准备

1. 下载下表中的 jar 包工具,并且放置到迁移集群提交机的本地目录下,例如 /data01/jars。
腾讯云 EMR 环境
安装说明
jar 包文件名
说明
下载地址
cos-distcp-1.12-3.1.0.jar
COSDistCp 相关包,拷贝数据到 COSN
chdfs_hadoop_plugin_network-2.8.jar
OFS 插件

自建 Hadoop/CDH 等环境
软件依赖
Hadoop-2.6.0及以上版本、Hadoop-COS 插件8.1.5及以上版本,同时 cos_api-bundle 插件版本与 Hadoop-COS 版本对应,详情请参见 COSN github releases 确认。
安装说明
在 Hadoop 环境下,安装以下插件:
jar 包文件名
说明
下载地址
cos-distcp-1.12-3.1.0.jar
COSDistCp 相关包,拷贝数据到 COSN
chdfs_hadoop_plugin_network-2.8.jar
OFS 插件
Hadoop-COS
Version >= 8.1.5
cos_api-bundle
版本需与 Hadoop-COS 对应

注意
Hadoop-cos 自8.1.5版本开始支持 cosn://bucketname-appid/ 方式访问元数据加速桶;
元数据加速功能只能在创建存储桶时开启,开启后不支持关闭,请结合您的业务情况慎重考虑是否开启,同时注意旧版本的 Hadoop-cos 包不能正常访问已开启元数据加速功能的存储桶。
2. 创建元数据加速存储桶,并配置元数据加速桶 HDFS 协议。详细步骤可参见 使用 HDFS 协议访问已开启元数据加速器的存储桶 中的“创建存储桶并配置 HDFS 协议”章节。
3. 修改迁移集群core-site.xml ,修改完成后下发配置到所有的节点上。如果只是迁移数据,则不用重启大数据组件。
key
value
配置文件
说明
fs.cosn.trsf.fs.ofs.impl
com.qcloud.chdfs.fs.CHDFSHadoopFileSystemAdapter
core-site.xml
COSN 实现类,必填
fs.cosn.trsf.fs.AbstractFileSystem.ofs.impl
com.qcloud.chdfs.fs.CHDFSDelegateFSAdapter
core-site.xml
COSN 实现类,必填
fs.cosn.trsf.fs.ofs.tmp.cache.dir
格式形如 /data/emr/hdfs/tmp/
core-site.xml
临时目录,必填。MRS 各节点均会创建,需保证有足够的空间和权限
fs.cosn.trsf.fs.ofs.user.appid
客户 COS bucket 对应得 appid
core-site.xml
必填
fs.cosn.trsf.fs.ofs.ranger.enable.flag
false
core-site.xml
必填,确认是否为 false
fs.cosn.trsf.fs.ofs.bucket.region
bucket 对应 region
core-site.xml
必填,可选值:eu-frankfurt(法兰克福)、ap-chengdu(成都)、ap-singapore(新加坡)
4. 验证迁移集群可以通过内网访问元数据加速存储桶,详细步骤可参见 使用 HDFS 协议访问已开启元数据加速器的存储桶 中的“配置计算集群访问 COS”章节。通过迁移集群提交验证是否能成功访问 COS。

存量迁移

1. 确定迁移目录

一般情况下,迁移数据会先从 HDFS 存储数据开始迁移,会选定源 HDFS 集群待迁移的目录,目标段保持和源路径相同,如下所示:
假设需要将 HDFS 路径 hdfs:///data/user/target 迁移到 cosn://{bucketname-appid}/data/user/target
为了保证迁移过程中,源端目录的文件不发生改变,会采用 HDFS 的快照功能,先给待迁移的目录打上快照,以当前日期作为快照文件名。
hdfs dfsadmin -disallowSnapshot hdfs:///data/user/
hdfs dfsadmin -allowSnapshot hdfs:///data/user/target
hdfs dfs -deleteSnapshot hdfs:///data/user/target {当前日期}
hdfs dfs -createSnapshot hdfs:///data/user/target {当前日期}
参考成功示例:


如果不想做快照,可直接以源端 target 文件进行迁移。

2. 使用 COSDistCp 迁移

启动 COSDistCp 任务,将文件从源 HDFS 复制到目标 COS 桶上。
COSDistCp 为 MapReduce 任务,MapReduce 任务打印日志中会提示 MR 任务执行成功与否。如果失败可查看 YARN 页面,将日志或异常信息提供到 COS 进行排查。通过 COSDistCp 工具执行迁移任务分为如下几个步骤: (1)创建临时目录 (2)运行 COSDistCp 任务 (3)失败文件重迁移

(1)创建临时目录

hadoop fs -libjars /data01/jars/chdfs_hadoop_plugin_network-2.8.jar -mkdir cosn://bucket-appid/distcp-tmp

(2)运行 COSDistCp 任务

nohup hadoop jar /data01/jars/cos-distcp-1.10-2.8.5.jar -libjars /data01/jars/chdfs_hadoop_plugin_network-2.8.jar --src=hdfs:///data/user/target/.snapshot/{当前日期} --dest=cosn://{bucket-appid}/data/user/target --temp=cosn://bucket-appid/distcp-tmp/ --preserveStatus=ugpt --skipMode=length-checksum --checkMode=length-checksum --cosChecksumType=CRC32C --taskNumber 6 --workerNumber 32 --bandWidth 200 >> ./distcp.log &
参数说明如下,您可根据实际情况进行调整:
--taskNumber=VALUE 指定拷贝进程数,示例:--taskNumber=10。
--workerNumber=VALUE 指定拷贝线程数,COSDistCp 在每个拷贝进程中创建该参数大小的拷贝线程池。示例:--workerNumber=4。
--bandWidth 限制读取每个迁移文件的带宽,单位为:MB/s,默认-1,不限制读取带宽。示例:--bandWidth=10。
--cosChecksumType=CRC32C, 默认采用 CRC32C,但是需要 HDFS 集群支持 COMPOSITE_CRC32 校验,依赖 Hadoop 版本3.1.1+,如果 HDFS 版本低于3.1.1,此参数需要改为--cosChecksumType=CRC64。
注意
COSDistCp 迁移的总带宽限制计算公式为:taskNumber x workerNumber x bandWidth,您可以将 workerNumber 设置为 1,通过参数 taskNumber 控制迁移并发数,以及参数 bandWidth 控制单个并发的带宽。
在拷贝任务结束时,任务日志会输出文件拷贝的统计信息,相关计数器如下: 其中 FILES_FAILED 代表失败的个数,若无 FILES_FAILED 统计项则说明全部迁移成功。
CosDistCp Counters
BYTES_EXPECTED=10198247
BYTES_SKIPPED=10196880
FILES_COPIED=1
FILES_EXPECTED=7
FILES_FAILED=1
FILES_SKIPPED=5

具体输出结果统计项说明如下:
统计项
说明
BYTES_EXPECTED
根据源目录统计的需拷贝的文件总大小,单位:字节
FILES_EXPECTED
根据源目录统计的需拷贝文件数,包含目录文件
BYTES_SKIPPED
长度或校验和值相等,不拷贝的文件总大小,单位:字节
FILES_SKIPPED
长度或校验和值相等,不拷贝的源文件数
FILES_COPIED
拷贝成功的源文件数
FILES_FAILED
拷贝失败的源文件数
FOLDERS_COPIED
拷贝成功的目录数
FOLDERS_SKIPPED
跳过的目录数

(3)失败文件重迁移

COSDistCp 工具不但可以解决大部分文件的迁移效率问题,同时也可以采用 --delete 参数支持 HDFS 和 COS 数据的完全一致。
使用 --delete 参数时,需要携带 --deleteOutput=/xxx(自定义) 参数,但不可以携带 --diffMode参数。
nohup hadoop jar /data01/jars/cos-distcp-1.10-2.8.5.jar -libjars /data01/jars/chdfs_hadoop_plugin_network-2.8.jar --src=--src=hdfs:///data/user/target/.snapshot/{当前日期} --dest=cosn://{bucket-appid}/data/user/target --temp=cosn://bucket-appid/distcp-tmp/ --preserveStatus=ugpt --skipMode=length-checksum --checkMode=length-checksum --cosChecksumType=CRC32C --taskNumber 6 --workerNumber 32 --bandWidth 200 --delete --deleteOutput=/dele-xx >> ./distcp.log &
运行完成后,会将HDFS和COS的差异数据移动到 trash 目录下,并且在 /xxx/failed 目录下生成移动文件清单。删除 trash 目录下的数据可以采用 hadoop fs -rm URL 或者hadoop fs -rmr URL

增量迁移

如果每一轮迁移过后,还存在更新的增量数据需要迁移,只需要重复执行全量迁移中的步骤即可,直到数据均已完成迁移。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈