如何正确执行hadoop distcp-f命令?

wxclj1h5  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(268)

我想在hadoop集群上备份一些文件夹和文件。我运行了这个命令:

hadoop distcp -p -update -f hdfs://cluster1:8020/srclist hdfs://cluster2:8020/hdpBackup/

我的srclist文件:

hdfs://cluster1:8020/user/user1/folder1
hdfs://cluster1:8020/user/user1/folder2
hdfs://cluster1:8020/user/user1/file1
``` `folder1` 包含两个文件:
part-00000 and part-00001 `folder2` 包含两个文件: `file and file_old` 该命令可以工作,但会分解所有文件夹内容。
结果:

--hdpBackup

  • part-00000
  • part-00001
  • file1
  • file
  • file_old
但我想得到结果:

--hdpBackup

  • folder1
  • folder2
  • file1
我不能用hdfs://cluster1:8020/user/user1/*因为user1包含许多文件夹和文件。
我怎样才能解决这个问题?
xghobddn

xghobddn1#

使用下面的脚本,它是shell编程:


# !/bin/sh

 for line in `awk '{print $1}' /home/Desktop/distcp/srclist`;
 do
 line1=$(echo $line | awk 'BEGIN{FS="/"}{print $NF}')

 echo "$line  $line1 file are source dest" 

 hadoop distcp  $line hdfs://10.20.53.157/user/root/backup1/$line1

 done
``` `srclist` 文件需要在本地文件系统中包含以下路径:

hdfs://10.20.53.157/user/root/Wholefileexaple_1
hdfs://10.20.53.157/user/root/Wholefileexaple_2

相关问题