准备工作
1. 在腾讯云官网创建 CHDFS 文件系统和 CHDFS 挂载点,配置好权限信息。
2. 通过腾讯云 VPC 环境的 CVM 访问创建好的 CHDFS,详情请参见 创建 CHDFS。
3. 当挂载成功后,打开 hadoop 命令行工具,执行以下命令,验证 CHDFS 功能是否正常。
hadoop fs -ls ofs://f4xxxxxxxxxxxxxxx.chdfs.ap-beijing.myqcloud.com/
如果能看到以下类似的输出,则表明云 HDFS 功能一切正常。
![](https://qcloudimg.tencent-cloud.cn/image/document/c616d2fd37489b0179e141648c756358.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/c616d2fd37489b0179e141648c756358.png)
迁移
使用 COSDistcp 工具迁移
COSDistcp 工具是由 COS 团队研发的适用于对象存储和 HDFS 系统之间进行数据高效传输的工具,针对对象存储系统和 HDFS 系统之间的差异,COS 团队对该工具进行了许多的优化和改进,其中包括:
跨系统之间的数据 CRC 在线校验
小文件性能
增量复制拷贝
当准备工作就绪后,即可使用 COSDistcp 工具进行数据迁移。COSDistcp 是一个 Jar 包工具,依赖 Hadoop 的 MapReduce 框架来执行。
执行命令提交 COSDistcp 程序到 Hadoop 系统。例如:
hadoop jar cos-distcp-1.6-2.8.5.jar -Dmapred.job.queue.name=root.users.presto --src /user/hive/warehouse/dw.db/logbak/ --srcPrefixesFile file:///home/hadoop/filebeat_gaotu_service0000 --dest ofs://f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com/user/hive/warehouse/dw.db/logbak/ --taskNumber=25 --workerNumber=10 --bandWidth=10 &#具体参数可以参考 COSDistcp 工具的文档
其中
f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com
为挂载点域名,需要根据实际申请的挂载点信息进行替换。使用 Distcp 工具迁移
注意事项
1. 在 hadoop distcp 工具中,提供了一些 CHDFS 不兼容的参数。如果指定如下表格中的一些参数,则不生效。
参数 | 描述 | 状态 |
-p[rbax] | r:replication,b:block-size,a:ACL,x:XATTR | 不生效 |
2. 由于 Hadoop 2.x 中的 HDFS 系统的 CRC 计算方式和对象存储文件的 CRC 计算方式不一致,导致在迁移过程中无法利用 crccheck 来对数据进行在线迁移校验。因此,在迁移过程中,一般都需要加上-skipcrccheck 选项。
如果需要校验迁移后的数据是否完整,需要借助 COS 研发的 COS 离线校验工具 进行离线校验。
Hadoop 3.1.1版本及以上,可以采用 COMPOSITE_CRC 算法进行在线校验,示例如下:
hadoop distcp -Ddfs.checksum.combine.mode=COMPOSITE_CRC -checksum hdfs://10.0.1.11:4007/testcp ofs://f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com/
示例说明
1. 当 CHDFS 准备就绪后,执行以下 hadoop 命令进行数据迁移。
hadoop distcp hdfs://10.0.1.11:4007/testcp ofs://f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com/
其中
f4xxxxxxxx-xxxx.chdfs.ap-beijing.myqcloud.com
为挂载点域名,需要根据实际申请的挂载点信息进行替换。2. Hadoop 命令执行完毕后,会在日志中打印出本次迁移的具体详情。如下示例所示:
2019-12-31 10:59:31 [INFO ] [main:13300] [org.apache.hadoop.mapreduce.Job:] [Job.java:1385]Counters: 38File System CountersFILE: Number of bytes read=0FILE: Number of bytes written=387932FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=1380HDFS: Number of bytes written=74HDFS: Number of read operations=21HDFS: Number of large read operations=0HDFS: Number of write operations=6OFS: Number of bytes read=0OFS: Number of bytes written=0OFS: Number of read operations=0OFS: Number of large read operations=0OFS: Number of write operations=0Job CountersLaunched map tasks=3Other local map tasks=3Total time spent by all maps in occupied slots (ms)=419904Total time spent by all reduces in occupied slots (ms)=0Total time spent by all map tasks (ms)=6561Total vcore-milliseconds taken by all map tasks=6561Total megabyte-milliseconds taken by all map tasks=6718464Map-Reduce FrameworkMap input records=3Map output records=2Input split bytes=408Spilled Records=0Failed Shuffles=0Merged Map outputs=0GC time elapsed (ms)=179CPU time spent (ms)=4830Physical memory (bytes) snapshot=1051619328Virtual memory (bytes) snapshot=12525191168Total committed heap usage (bytes)=1383071744File Input Format CountersBytes Read=972File Output Format CountersBytes Written=74org.apache.hadoop.tools.mapred.CopyMapper$CounterBYTESSKIPPED=5COPY=1SKIP=2