5

我使用将一些文件从目录复制到目录

hadoop distcp -Dmapreduce.job.queuename=adhoc /user/comverse/data/$CURRENT_DATE_NO_DASH_*/*rcr.gz /apps/hive/warehouse/arstel.db/fair_usage/fct_evkuzmin04/file_rcr/

我在 scipt 完成之前停止了它,剩下的很多.distcp.tmp.attempt文件在 dst 目录中移动

现在我想清理 dst 目录。运行后

hadoop fs -rm -skipTrash /apps/hive/warehouse/arstel.db/fair_usage/fct_evkuzmin04/file_mta/*

大多数文件都被删除了,但有些仍然存在(至少 HUE 是这样显示的)。奇怪的是,每次我运行时hadoop fs -rm -skipTrash,根据 HUE,剩余文件的数量都会或多或少地变化。

我试过了

hadoop fs -ls /apps/hive/warehouse/arstel.db/fair_usage/fct_evkuzmin04/file_mta/

并看到一些应该删除的文件仍然存在。然后我跑

hadoop fs -rm -skipTrash /apps/hive/warehouse/arstel.db/fair_usage/fct_evkuzmin04/file_mta/*

十几次,总是有更多的文件要删除(仍然有)。怎么了?

每次我以色调刷新页面时,文件数量都会增加。暂停。

编辑

在命令行中停止 distcp 似乎并没有真正杀死这项工作。这就是原因。

4

2 回答 2

6

你可以使用这个 “-R”:

这会从您的 hdfs 位置删除所有文件。

hadoop fs -rm -R -skipTrash /apps/hive/warehouse/arstel.db/fair_usage/fct_evkuzmin04/file_mta/*
于 2017-08-11T05:45:45.960 回答
5

Ctrl + C不会杀死纱线应用程序。distcp使用MapReduce模型复制数据。当您运行distcp命令时,它会提交纱线应用程序以在 hadoop 上运行以复制数据。您需要终止纱线应用程序以停止distcp复制过程。

杀死纱线应用程序的命令:

yarn application -kill <application_id>

于 2017-08-11T04:57:51.793 回答