3

ディレクトリを 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)
4

1 に答える 1

6

Java で ~ 文字を使用して現在のホーム ディレクトリを表すことはできないため、次のように完全修飾パスに変更します。

file:///home/user1/hbase

しかし、完全に分散された環境では、distcp コマンドがマップ削減ジョブを実行するため、宛先パスが各クラスター ノードに対してローカルであると解釈されるため、問題が発生すると思います。

hadoop fsHDFS からローカル ディレクトリにデータを取得する場合は、コマンドに -get または -copyToLocal スイッチを使用する必要があります。

于 2013-04-19T11:29:30.037 に答える