Hive的/tmp/hive以及/user/hive/warehouse目录对Hive的影响

使用belline链接时候!connect jdbc:hive2://cdhalone:10000

/tmp/hive目录存放的是Hive的临时操作目录比如插入数据,insert into插入Hive表数据的操作,Hive的操作产生的操作临时文件都会存储在这里,或者比如在${HIVE_HOME}/bin下执行,sh hive,进入Hive的命令行模式,都会在这里/tmp/hive目录下产生一个Hive当前用户名字命名的临时文件夹,这个文件夹权限是700,默认是hadoop的启动用户,我的hadoop用户是hadoopadmin,所以
名字是hadoopadmin的文件夹,


image.png

但是仔细看会发现,Hive这个文件夹权限是对于其他用户,或者其他用户组用户是有写和执行权限的


image.png

因为会有不同的用户连接Hive对吧,所以不同的用户连接Hive就要在/tmp/hive对应不同用户名的文件夹,所以Hive文件夹权限是rwx-wx-wx,然后里面对应不同用户的文件夹权限是rwx--------,

sh hive客户端之后,假如是hadoopadmin默认用户登录的,然后sh hive进入hive客户端之后,hadoopadmin文件夹就有内容,然后关闭hive的命令行,hadoopadmin里面内容消失,hive自动清空,有时候hive清空不了的话,比如hive客户端打开,然后你直接把虚拟机关了,这个就hadoopadmin里面可能就有内容

如果自己不小心把/tmp/hive这个文件夹权限由rwx-wx-wx改成了rwx---------,虽然你想,我都是hadoopadmin用户,为什么报错权限不足?
如果你改成了700权限,hive启动报错权限不足,


image.png

而且有的人即使给他加上了w权限也会报错这个,你要注意,在Hadoop体系里面,如果报错缺少read或者writable,你都默认加r+x或者w+x,就是附带执行权限加上

如果/tmp/hive权限是700的话,不光报错上面这个,另外你尝试sh hiveserver2时候,启动没问题,但是就是发现10000端口没有启动,10002端口页面也访问不了,为毛呢?因为启动hiveserver2也要在/tmp/hive/hadoopadmin里面生成文件,你/tmp/hive权限都不对,

所以这个目录权限不要所以更改,hive之所以默认/tmp/hive权限是rwx-wx-wx,是因为连接hive可能存在多个用户

在使用belline方式连接时候,随意输入用户lala,
如果/tmp是700权限,就必须是如hadoopadmin,如果不输入用户名或者随意输入,就会报错,因为他连/tmp目录都进不去,


image.png

如果把belline连接方式时候,把/tmp改成777,然后随意输入用户,lala,他就可以在/tmp/hive下生成一个叫lala文件夹,然后lala对应的操作就可以在这个文件夹下生成

用belline连接时候,如果是lala用户,操作hadopadmin用户创建的表,查看内容可以,如果是新增数据,就是写权限,是会报错的,因为添加文件涉及到内容就会在/user/hive/warehouse,里面对应的表文件夹权限对于其他用户没有写权限,所以其他用户插入数据报错


image.png

另外hive设计的是,因为hiveserver2可以多个hadoopadmin用户连接对吧,然后a电脑用hadoopadmin用户连接,b用户用hadoopadmin用户连接,他们在hadoopadmin文件夹下都有自己的文件夹,虽然后市hadoopadmin用户,但是hive就自动帮你区分了,省了乱了,很人性化的


image.png

进程取消连接之后,就会自动把这个连接的文件夹清楚,注意hadoopadmin用户文件夹不会清楚,删除的是里面子文件夹


image.png

结尾彩蛋:演示一种现象,假如hiveserver启动之后,在/tmp/hive/hadoopadmin就会出现一个文件夹


image.png

然后用dbeaver工具连接,


image.png

只有一个连接,出现了很多,这个应该是dbeaver默认的安数据库创建的,无所谓的,别慌,可能有的工具只创建一个文件夹,有的工具创建很多文件夹,这个和工具有关系