如果不小心删除了了hive的元数据文件(/user/hive/warehouse),只要先前core-site.xml文件中设置了fs.trash.interval属性就可以找回。hdfs会为用户创建一个回收站的目录,通过shell删除的文件会在该回收站中停放一定的时间,最终才被删除。该回收站目录是/user/用户名/.Trash/Current/user/hive/warehouse,如果短时间删除多个,/user/用户名/.Trash/Current/user/hive目录下会有多个warehouse。想恢复只需要把需要的元数据mv回到/user/hive/warehouse目录下即可(hdfs dfs -mv /user/用户名/.Trash/Current/user/hive/warehouse /user/hive/warehouse)。
hadoop中trash选项,默认是关闭的,如果要生效需要将trash选项打开,在core-site.xml文件中配置fs.trash.interval即可
<property> <name>fs.trash.interval</name> <value>1020</value> </property> <property> <name>fs.trash.checkpoint.interval</name> <value>1020</value> </property>
fs.trash.interval设置的默认单位是分钟,等回收周期真正到了以后。hdfs才会将数据真正删除。fs.trash.checkpoint.interval则是指垃圾回收的检查间隔,应该是小于或者等于fs.trash.interval