Hive的权限管理一直是比较弱的,最近在线上发现了一个问题.线上一个ETL开发drop掉temp database里的一张表,但是发现hdfs上文件还在!
首先明确一下Hive drop table的流程:
0.删除metadata
1.如果没有启用trash则直接删除hdfs文件
2.如果启用trash:
a)如果trash目录无权限访问(默认/user/<username>/.trash)文件则成为“僵尸”文件,永远保留在那里
b)否则若用hive command执行或hiveserver开启了impersonation则将文件移动到/user/<username>/.trash下,否则移动到/user/<hiveserver runner>/.trash下
线上出现这个问题是因为/user目录的mode为700,用户无法创建自己的目录导致删除文件失败,从以上流程可以看到,Hive的权限和HDFS的权限是相分离的,而这个问题实为Hive的Bug一直还没有得到修复
本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1334530,如需转载请自行联系原作者