hadoop - 如何使 Hadoop Distcp 复制自定义文件夹列表?

标签 hadoop mapreduce hdfs distributed-computing

我正在寻找有效的方法来将目录列表从一个 Hadoop 文件系统同步到另一个具有相同目录结构的文件系统。

例如,假设 HDFS1 是创建数据的官方来源,我们需要每周一次将新创建的数据复制到所有 下。数据-2 HDFS2 的目录:

**HDFS1**
hdfs://namenode1:port/repo/area-1/data-1
hdfs://namenode1:port/repo/area-1/data-2
hdfs://namenode1:port/repo/area-1/data-3
hdfs://namenode1:port/repo/area-2/data-1
hdfs://namenode1:port/repo/area-2/data-2
hdfs://namenode1:port/repo/area-3/data-1

**HDFS2** (subset of HDFS1 - only data-2)
hdfs://namenode2:port/repo/area-1/dir2
hdfs://namenode2:port/repo/area-2/dir2

在这种情况下,我们有 2 个要同步的目录:
/repo/area-1/data-2
/repo/area-1/data-2

这可以通过以下方式完成:
hadoop distcp hdfs://namenode1:port/repo/area-1/data-2 hdfs://namenode2:port/repo/area-1
hadoop distcp hdfs://namenode1:port/repo/area-2/data-2 hdfs://namenode2:port/repo/area-2

这将运行 2 个 Hadoop 作业,如果目录数量很大,假设 hdfs://namenode1:port/下有 500 个不同的非重叠目录 - 这将创建 500 个 Hadoop 作业,这显然是多余的。

有没有办法将自定义目录列表注入(inject) distcp?
如何使 distcp 创建一项复制自定义目录列表中所有路径的作业?

最佳答案

不确定这是否能解决问题,但我注意到您没有使用“更新”运算符。 “-update”运算符只会复制两个文件系统之间的 block 差异......

关于hadoop - 如何使 Hadoop Distcp 复制自定义文件夹列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19722723/

相关文章:

hadoop - 使用 Java 类作为映射器和 Python 脚本作为缩减器

hadoop - Spark 无法再执行作业。执行者创建目录失败

hadoop - Pig生成 key 更改列-比较先前记录与当前记录,但列不同

java - 配置单元 : Tez how to increase AM Container memory

java - 使用 Java API 在 Hadoop 中移动文件?

apache-spark - 如何创建与远程Spark服务器的连接并从运行在本地计算机上的ipython读取数据?

mysql - 在连接到mysql RDS时启动Hive 3.1 Metastore错误

hadoop - 在 Hive 中导入带有 key=value 对的平面文件

linux - 像 "hadoop fs -ls"这样的 hadoop shell 命令是如何工作的?

java - 如何通过网络将数据从一个HDFS集群迁移到另一个集群?