2013-04-19 3 views
3

Я пытаюсь создать резервную копию каталога из hdfs в локальный каталог. У меня есть сервер hasoop/hbase, работающий на ec2. Мне удалось выполнить то, что я хочу использовать в псевдораспределении на моем локальном компьютере, но теперь я полностью распределен, так же, как и в случае неудачных попыток. Вот то, что работает для псевдо-распределенныхРезервное копирование каталога hdfs из полностью распределенного в локальный каталог?

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

Вот что я пытаюсь на Hadoop NameNode (HBase мастер) на EC2

[email protected]:~$ 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) 

ответ

6

Вы не можете использовать символ ~ в Java для представления текущего домашнего каталога, поэтому перейдите на полный путь, например:

file:///home/user1/hbase 

Но я думаю, что вы столкнетесь с проблемами в полностью распределенной среде, так как команда distcp запускает работу по сокращению карты, поэтому путь назначения будет интерпретироваться как локальный для каждого узла кластера.

Если вы хотите вывести данные вниз из HDFS в локальный каталог, вам необходимо использовать -get или -copyToLocal переключатели команды hadoop fs

+0

Еще раз спасибо Крис, 'get' выглядит именно то, что я необходимость. Делать 'get' и' put' работать как для каталогов, так и для файлов? –

+0

Сверху моей головы я так думаю да –

+0

Я проверил это, и они действительно работают для каталогов, спасибо Крису! –

Смежные вопросы