将hdfs目录从完全分布式备份到本地目录?

icomxhvb  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(464)

我正在尝试将目录从hdfs备份到本地目录。我有一个hadoop/hbase集群在ec2上运行。我设法做了我想在我的本地机器上以伪分布式运行的事情,但是现在我完全分布式了,同样的步骤也失败了。以下是对伪分布式系统有效的方法

hadoop distcp hdfs://localhost:8020/hbase file:///Users/robocode/Desktop/

下面是我在ec2上尝试的hadoop namenode(hbase master)

ec2-user@ip-10-35-53-16:~$ hadoop distcp hdfs://10.35.53.16:8020/hbase file:///~/hbase

我得到的错误如下

13/04/19 09:07:40 INFO tools.DistCp: srcPaths=[hdfs://10.35.53.16:8020/hbase]
13/04/19 09:07:40 INFO tools.DistCp: destPath=file:/~/hbase
13/04/19 09:07:41 INFO tools.DistCp: file:/~/hbase does not exist.
With failures, global counters are inaccurate; consider running with -i
Copy failed: java.io.IOException: Failed to createfile:/~/hbase
    at org.apache.hadoop.tools.DistCp.setup(DistCp.java:1171)
    at org.apache.hadoop.tools.DistCp.copy(DistCp.java:666)
    at org.apache.hadoop.tools.DistCp.run(DistCp.java:881)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
    at org.apache.hadoop.tools.DistCp.main(DistCp.java:908)
axr492tv

axr492tv1#

在java中不能使用~字符来表示当前主目录,因此请更改为完全限定的路径,例如:

file:///home/user1/hbase

但是我认为在完全分布式的环境中,当distcp命令运行map reduce作业时,您将遇到问题,因此目标路径将被解释为每个集群节点的本地路径。
如果要将数据从hdfs下拉到本地目录,则需要使用-get或-copytolocal开关来 hadoop fs 命令

相关问题