Avi*_*ddy 27
DistCp(分布式副本)是用于在群集之间复制数据的工具.它使用MapReduce实现其分发,错误处理和恢复以及报告.它将文件和目录列表扩展为映射任务的输入,每个任务都将复制源列表中指定的文件的分区.
用法: $ hadoop distcp <src> <dst>
例: $ hadoop distcp hdfs://nn1:8020/file1 hdfs://nn2:8020/file2
file1from nn1被复制到nn2文件名file2
Distcp是目前最好的工具.Sqoop用于将数据从关系数据库复制到HDFS,反之亦然,但不能在HDFS到HDFS之间复制.
更多信息:
有两个版本可供使用 - 运行时性能distcp2比较高distcp
小智 16
Hadoop附带了一个有用的程序,distcp用于并行地向Hadoop文件系统复制大量数据.distcp的规范用例是用于在两个HDFS集群之间传输数据.如果集群运行相同版本的hadoop,则hdfs方案适合使用.
$ hadoop distcp hdfs://namenode1/foo hdfs://namenode2/bar
Run Code Online (Sandbox Code Playgroud)
/foonamenode1目录中的数据将被复制到namenode2的/ bar目录中.如果该/bar目录不存在,它将创建它.我们也可以提到多个源路径.
与rsync命令类似,默认情况下,distcp命令将跳过已存在的文件.我们还可以使用-overwriteoption覆盖目标目录中的现有文件.该选项-update仅更新已更改的文件.
$ hadoop distcp -update hdfs://namenode1/foo hdfs://namenode2/bar/foo
Run Code Online (Sandbox Code Playgroud)
distcp也可以实现为MapReduce作业,其中复制工作由跨集群并行运行的映射完成.没有减速器.
如果尝试在运行不同版本的两个HDFS集群之间复制数据,则复制将处理失败,因为RPC系统不兼容.在这种情况下,我们需要使用只读的基于HTTP的HFTP文件系统从源读取.这里的工作必须在目标集群上运行.
$ hadoop distcp hftp://namenode1:50070/foo hdfs://namenode2/bar
Run Code Online (Sandbox Code Playgroud)
50070是namenode的嵌入式Web服务器的默认端口号.
distcp用于并行地将数据复制到hadoop文件系统和从hadoop文件系统复制数据.它类似于通用hadoop fs -cp命令.在后台进程中,distcp实现为MapReduce作业,其中映射器仅用于跨群集并行复制.
用法:
将一个文件复制到另一个
% hadoop distcp file1 file2
将目录从一个位置复制到另一个位置
% hadoop distcp dir1 dir2
如果dir2不存在则会创建该文件夹并复制内容.如果dir2已经存在,那么dir1将在其下复制.-overwrite选项强制在同一文件夹中覆盖文件.-update选项仅更新已更改的文件.
在两个HDFS集群之间传输数据
% hadoop distcp -update -delete hdfs://nn1/dir1 hdfs://nn2/dir2
-delete 选项从目标中删除源中不存在的文件或目录.
| 归档时间: |
|
| 查看次数: |
77744 次 |
| 最近记录: |