备份hdfs目录从完全分发到本地目录?

时间:2013-04-19 09:08:50

标签: hadoop amazon-web-services amazon-ec2 hbase

我正在尝试将目录从hdfs备份到本地目录。我在ec2上运行了一个hadoop / hbase集群。我设法做了我想在我的本地机器上以伪分布式运行的东西,但现在我完全分发了同样的步骤失败了。这适用于伪分布式

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)

1 个答案:

答案 0 :(得分:6)

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

file:///home/user1/hbase

但我认为您将在完全分布式环境中遇到问题,因为distcp命令运行map reduce作业,因此目标路径将被解释为每个群集节点的本地路径。

如果要将数据从HDFS下拉到本地目录,则需要使用-get或-copyToLocal开关到hadoop fs命令