我正在寻找一种高效的方法来将目录列表从一个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
在本例中,我们有两个目录要同步:
/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 1:port/下有500个不同的不重叠目录--这将创建500个Hadoop作业,这显然是过分的。
是否有方法将自定义目录列表注入distcp?如何使distcp创建一个作业,复制自定义目录列表中的所有路径?
发布于 2014-05-13 16:44:09
不确定这是否解决了问题,但我注意到您没有使用"update“运算符。"-update“运算符将只复制两个文件系统之间块的差异.
https://stackoverflow.com/questions/19722723
复制相似问题