HDFS TO COS 工具用于将 HDFS 上的数据拷贝到腾讯云对象存储 COS 上。
Linux 或 Windows 系统。
JDK 1.7或1.8。
具体环境安装与配置请参见 Java 安装与配置。
注意:当命令行参数中的参数与配置文件重合时,以命令行为准。
说明:下面以 Linux 为例介绍如何使用。
./hdfs_to_cos_cmd -h
执行结果如下图所示:
从 HDFS 拷贝到 COS,若 COS 上已存在同名文件,则会覆盖原文件。
./hdfs_to_cos_cmd --hdfs_path=/tmp/hive --cos_path=/hdfs/20170224/
从 HDFS 拷贝到 COS,若 COS 上已存在同名且长度一致的文件时,则忽略上传(适用于拷贝一次后,重新拷贝)。
./hdfs_to_cos_cmd --hdfs_path=/tmp/hive --cos_path=/hdfs/20170224/ -skip_if_len_match
这里只对长度进行判断,因为如果将 Hadoop 上的文件摘要进行计算,开销较大。
./hdfs_to_cos_cmd --decompress_har --hdfs_path=/tmp/hive --cos_path=/hdfs/20170224/
若未指定 --decompress_har 参数,默认按照普通的 HDFS 目录进行拷贝,即 .har 目录下的 index 和 masterindex 等文件原样拷贝。
conf : 配置文件, 用于存放 core-site.xml 和 cos_info.conf
log : 日志目录
src : Java 源程序
dep : 编译生成的可运行的 JAR 包
请确保填写的配置信息正确,包括存储桶(Bucket)、地域(Region)以及 API 密钥信息,其中,存储桶的名字,由用户自定义字符串和系统生成 APPID 数字串由中划线连接而成,例如 examplebucket-1250000000。并保证机器的时间和本地时间一致(相差1分钟左右是正常的),如果相差较大,请重新设置机器时间。
请保证对于 DataNode,拷贝程序所在的机器也可以连接。NameNode 有外网 IP 可以连接,但获取的 block 所在的 DateNode 机器是内网 IP,是无法直接连接上的。因此建议同步程序放在 Hadoop 的某个节点上执行,保证对 NameNode 和 DataNode 皆可访问。
请使用 Hadoop 命令下载文件,检查是否正常,再使用同步工具同步 Hadoop 上的数据支持。
对于 COS 上已存在的文件,默认进行重传覆盖。除非用户明确的指定 -skip_if_len_match,当文件长度一致时,则跳过上传。
cos path 默认为是目录,最终从 HDFS 上拷贝的文件都会存放在该目录下。
从腾讯云 EMR HDFS 拷贝数据到 COS,建议使用高性能 Distcp 工具,请参见 Hadoop 文件系统与 COS 之间的数据迁移。
本页内容是否解决了您的问题?