如果您需要将自有 HDFS 的原始数据迁移至腾讯云 EMR,可以通过两种方式进行数据迁移,第一种是通过腾讯云对象存储(COS)进行数据中转迁移,第二种是通过 Hadoop 自带文件迁移工具 DistCp 进行数据迁移。本文主要介绍通过 DistCp 进行数据迁移。
DistCp(distributed copy)是 Hadoop 自带的文件迁移工具。它使用 MapReduce 来实现其分发、错误处理和恢复、报告的功能。它将文件和目录的列表扩展为映射任务的输入,每个任务将复制源列表中指定的文件的分区。使用 DistCp 需要实现自建集群和 EMR 集群的网络互通。
使用 DistCP 数据迁移步骤如下:
本地自建 HDFS 文件迁移到 EMR 集群需要有专线打通网络,可以联系开发人员协助解决。
网段1:广州的 VPC1 中的子网 A 192.168.1.0/24。
网段2:北京的 VPC2 中的子网 B 10.0.1.0/24。
说明:如果本端网络和对端网络都在同一地域,例如广州,通信是免费的,也不需要选择带宽上线;如果不在同一地域,就要进行收费,同时带宽上限可选。
# 集群间的拷贝,将一个文件夹拷贝到另一个集群
hadoop distcp hdfs://nn1:9820/foo/bar hdfs://nn2:9820/bar/foo
# 指定文件拷贝
hadoop distcp hdfs://nn1:9820/foo/a hdfs://nn1:9820/foo/b hdfs://nn2:9820/bar/foo
# 如果指定的文件太多,可使用 -f 参数。
注意:
- 对于上述命令,必须要求源和目的版本相同。
- 如果另一个客户端仍然在写入源文件,则该拷贝可能会失败;如果一个文件正在被拷贝到目的端,试图重写该文件的操作会失败;如果源文件在被复制之前被移动,那么拷贝将失败,报错信息为 FileNotFoundException。
本页内容是否解决了您的问题?