如何将数据从一个HDF复制到另一个HDF?

mkshixfv  于 2021-06-02  发布在  Hadoop
关注(0)|答案(6)|浏览(590)

我有两个hdfs设置,希望将一些表从hdfs1复制(而不是迁移或移动)到hdfs2。如何将数据从一个hdfs复制到另一个hdfs?是否可以通过sqoop或其他命令行?

ttisahbt

ttisahbt1#

还需要注意的是,可以使用源集群或目标集群运行底层mapreduce作业,如下所示:

hadoop --config /path/to/hadoop/config distcp <src> <dst>
ebdffaop

ebdffaop2#

distcp 用于并行地向hadoop文件系统复制数据和从hadoop文件系统复制数据。它类似于泛型 hadoop fs -cp 命令。在后台进程中, distcp 实现为mapreduce作业,其中Map器仅用于在集群中并行复制。
用法:
将一个文件复制到另一个文件 % 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 选项从目标中删除源中不存在的文件或目录。

4urapxun

4urapxun3#

试试dtingest,它是在ApacheApex平台上开发的。此工具将来自不同来源(如hdfs、共享驱动器、nfs、ftp、kafka)的数据复制到不同的目标。dtingest支持将数据从远程hdfs群集复制到本地hdfs群集。dtingest运行线程作业以并行方式复制数据,因此速度非常快。它负责故障处理、恢复等,并支持定期轮询目录进行连续复制。
用法:dtingest[选项]。。。源URL。。。destinationurl示例:dtingesthdfs://nn1:8020/源hdfs://nn2:8020/目的地

uurity8g

uurity8g4#

hadoop附带了一个名为 distcp 用于并行地向hadoop文件系统复制大量数据。distcp的规范用例是在两个hdfs集群之间传输数据。如果集群运行的是相同版本的hadoop,那么hdfs方案是合适的。

$ hadoop distcp hdfs://namenode1/foo hdfs://namenode2/bar

中的数据 /foo namenode1的目录将被复制到namenode2的/bar目录。如果 /bar 目录不存在,它将创建它。我们还可以提到多个源路径。
类似 rsync 默认情况下,distcp命令将跳过已经存在的文件。我们也可以使用 -overwrite 选项覆盖目标目录中的现有文件。选择 -update 将只更新已更改的文件。

$ hadoop distcp -update hdfs://namenode1/foo hdfs://namenode2/bar/foo
``` `distcp` 也可以实现为mapreduce作业,其中复制工作由在集群中并行运行的Map完成。不会有减速器。
如果尝试在两个运行不同版本的hdfs集群之间复制数据,复制过程将失败,因为rpc系统不兼容。在这种情况下,我们需要使用只读的基于http的hftp文件系统从源代码读取。在这里,作业必须在目标集群上运行。

$ hadoop distcp hftp://namenode1:50070/foo hdfs://namenode2/bar

50070是namenode的嵌入式web服务器的默认端口号。
ovfsdjhp

ovfsdjhp5#

distcp命令用于并行地从一个集群复制到另一个集群。必须设置src的namenode的路径和dst的namenode的路径,内部使用mapper。
例子:

$ hadoop distcp <src> <dst>

您可以为distcp设置的选项很少
-m表示用于复制数据的Map器的数量这将提高复制速度。
-自动提交数据的原子。
-更新将只更新旧版本的数据。
hadoop中有用于复制文件的通用命令are-cp和-put,但它们仅在数据量较少时使用。

uinbv5nw

uinbv5nw6#

distcp(distributed copy)是一种用于在集群之间复制数据的工具。它使用mapreduce实现其分发、错误处理和恢复以及报告。它将文件和目录列表展开为Map任务的输入,每个任务将复制源列表中指定的文件分区。
用法: $ hadoop distcp <src> <dst> 例子:
$ hadoop distcp hdfs://nn1:8020/file1 hdfs://nn2:8020/file2 file1nn1 已复制到 nn2 带文件名 file2 到目前为止,distcp是最好的工具。sqoop用于将数据从关系数据库复制到hdfs,反之亦然,但不能在hdfs到hdfs之间进行复制。
更多信息:
http://hadoop.apache.org/docs/r1.2.1/distcp.html
http://hadoop.apache.org/docs/r1.2.1/distcp2.html
有两个版本可用-运行时性能 distcp2 与…相比 distcp

相关问题