我是hadoop和hive的新手,所以这个问题可能太基本
我将Hadoop用作非Admin用户,即,我不知道HDFS,root或SuperSuler密码。我的目的是仅查询蜂巢表,可能进行一些简单的分析,但不在HDFS中写或创建任何新表。
Logging initialized using configuration in file:/etc/hive/2.3.2.0-2950/0/hive-log4j.properties
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.security.AccessControlException: Permission denied: user=b001195, access=WRITE, inode="/user/b001195":hdfs:hdfs:drwxr-xr-x
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:319)
我可以看到此错误说该用户没有对HDFS的写入访问权限。但是我不想写任何东西。谁能建议我可以通过访问级别进行哪些更改以删除此问题?
事先感谢您的帮助。
使用以下命令查找具有777个权限(/tmp)的HDFS目录:
hdfs dfs -ls /
然后找到该目录后,将以下内容添加到您连接到Hive的命令中:
--hiveconf hive.exec.scratchdir=<DIRECTORY FOUND IN PREVIOUS STEP>
如果您处于kerberized环境中,则必须在kerberize db中使用用户名创建校长,并且必须打开票,
注意
您将需要Kerberos Admin特权。
参考:
https://web.mit.edu/kerberos/krb5-1.12/doc/admin/admin/admin_commands__/kadmin_local.html
然后您可以进入Hadoop环境,但是要读/写/执行Hadoop目录,您必须是:
- 成为目录的所有者
- 在该目录的组中
- 目录必须允许其他组
- 属于Hadoop超级用户组(您不提到您)
根据我在Hadoop,Linux甚至Windows服务器方面的经验,大多数问题都与权限问题有关。
我想添加有关此的报价:)
当我们生活在一个我们没有和需要任何钥匙,锁,大门,保险箱,密码,用户权限或任何与安全有关的时间/浪费障碍的世界中,我们可以说我们生活在一个完美的社会