【问题标题】:How to make Hadoop Distcp copy custom list of folders?如何使 Hadoop Distcp 复制自定义文件夹列表?
【发布时间】:2013-11-01 07:47:17
【问题描述】:

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

例如,假设 HDFS1 是创建数据的官方来源,我们需要每周一次将所有 data-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 作业,这显然是多余的。

有没有办法将自定义目录列表注入到 distcp 中? 如何让 distcp 创建一个作业来复制自定义目录列表中的所有路径?

【问题讨论】:

    标签: hadoop mapreduce hdfs distributed-computing


    【解决方案1】:

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

    【讨论】:

    • 感谢贡献,但是如何避免调用很多hadoop作业?
    猜你喜欢
    • 2022-10-22
    • 1970-01-01
    • 2016-02-06
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多