HDFS文件误删除之恢复

启动HDFS的垃圾回收站为了防止误删,一般默认是关闭的,需要我们自己配置文件打开。

修改core-site.xml

    <property>
               <name>fs.trash.interval</name>
               <value>1440</value>
               <!--在回收站停留的时间,单位是分钟-->
    </property>
    <property>
               <name>fs.trash.checkpoint.interval</name>
               <value>1440</value>
               <!--检查回收站的时间间隔,小于等于上面的值,此时间值不要太短,可以1天左右。若设置1分钟,则去回收站找该文件比较麻烦;
               该机制会将文件以一个时间戳的方式留存。-->
    </property>
----------------------------------------------------------------------------------
    
一般垃圾回收站的路径是HDFS上的 /user/用户名/.Trash/
hadoop fs -ls /user/hadoop/.Trash/Current/   被删除的文件会保存在Current这个目录下,也会以时间戳为目录名

演示例子:
上传文件 hadoop fs -put my.cnf /
删除文件 hadoop fs -rm -r /my.cnf
提示:
18/07/21 11:39:17 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 1 minutes.
18/07/21 11:39:17 INFO fs.TrashPolicyDefault: Moved: 'hdfs://bd1803/my.cnf' to trash at: hdfs://bd1803/user/cry/.Trash/Current/my.cnf
Moved: 'hdfs://bd1803/my.cnf' to trash at: hdfs://bd1803/user/cry/.Trash/Current

查找该被删除的文件:
hadoop fs -ls /user/cry/.Trash/Current
提示:
Found 1 items
-rw-r--r--   2 cry supergroup       1208 2018-07-21 11:38 /user/cry/.Trash/Current/my.cnf
恢复该文件:
hadoop fs -mv /user/cry/.Trash/Current/my.cnf /tmp/

---------------------------------------------------------------------------------------------------------
如果我们不想跳过垃圾回收站,直接删除某个文件,那么直接使用  hadoop fs -rm -r -skipTrash  /文件路径
    
我们想恢复被误删的文件只需要  hadoop fs -mv /user/hadoop/.Trash/Current/123.log  /指定文件路径 (假如被误删的文件为123.log)

<think>好的,用户问的是怎么删除HDFS中本地上传的文件。首先,我需要确认用户对HDFS的基本操作是否了解。HDFSHadoop分布式文件系统,用户可能已经通过hdfs dfs -put或者hdfs dfs -copyFromLocal命令把本地文件上传到HDFS了,现在想删除这些文件。 接下来,我得考虑用户可能的错误点。比如,用户可能误以为删除HDFS上的文件会同时删除本地文件,但其实这两个是独立的。所以需要提醒用户,HDFS删除操作不会影响本地文件,避免误解。 然后,具体删除步骤需要明确。使用hdfs dfs -rm命令,这里要分情况:如果删除单个文件,直接指定路径;如果是目录,可能需要递归删除。另外,用户可能遇到文件被锁定的情况,比如有其他进程在使用,这时候需要提示检查是否有应用程序正在访问该文件。 还有权限问题,用户可能没有足够的权限删除文件,这时候需要提到检查权限,或者使用合适的用户身份执行命令。此外,回收站机制也是一个点,HDFS默认是否启用回收站,删除后是否还能恢复,这些信息对用户可能有帮助,需要说明清楚。 可能用户上传的是测试文件,现在想清理空间,或者上传了错误的文件需要删除。因此,步骤要简明,确保用户能安全操作,不会误删重要数据。最后,给出示例命令,让用户可以直接复制使用,并解释每个参数的作用,比如-r递归删除,-skipTrash绕过回收站。 总结下来,回答的结构应该是先确认删除操作的影响,再分步骤说明命令,提示常见问题和注意事项,最后给出示例。这样用户能一步步操作,避免出现问题。</think>要删除HDFS中通过本地上传的文件,需要通过Hadoop文件系统命令操作。以下是详细步骤和注意事项: --- ### 一、核心操作步骤 1. **定位HDFS文件路径** 使用 `hdfs dfs -ls` 确认文件HDFS中的完整路径,例如: ```bash hdfs dfs -ls /user/hadoop/your_uploaded_file.txt ``` 2. **执行删除命令** 使用 `hdfs dfs -rm` 命令删除文件: ```bash hdfs dfs -rm /user/hadoop/your_uploaded_file.txt ``` 3. **删除目录(如需)** 若删除的是目录且包含子文件,需添加 `-r` 参数: ```bash hdfs dfs -rm -r /user/hadoop/your_directory ``` --- ### 二、关键注意事项 1. **本地文件不受影响** HDFS中的文件与本地文件系统是隔离的,删除HDFS文件不会影响原始本地文件。 2. **回收站机制** HDFS默认启用回收站(保留周期通过 `fs.trash.interval` 配置),删除操作实际是移动文件到回收站路径: ```bash /user/${username}/.Trash/Current/... ``` 3. **强制跳过回收站** 若需直接永久删除(绕过回收站),添加 `-skipTrash` 参数: ```bash hdfs dfs -rm -skipTrash /user/hadoop/your_file.txt ``` --- ### 三、常见问题排查 1. **权限不足** 错误提示:`Permission denied` 解决方法:使用有权限的用户执行命令,或用 `sudo -u hdfs` 指定HDFS超级用户。 2. **文件被锁定** 错误提示:`File /path is in use` 解决方法:确认没有MapReduce任务或其他进程正在访问该文件。 --- ### 四、操作验证 删除后通过 `hdfs dfs -ls` 检查目标路径是否已清空: ```bash hdfs dfs -ls /user/hadoop/ ``` 通过以上步骤,您可以安全地管理HDFS中的文件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值