我是Hadoop和Hive的新手,所以这个问题可能太基本了
我使用Hadoop作为非管理员用户,即我不知道hdfs,root或超级用户密码。我的目标是只查询Hive表并可能做一些简单的分析,但不能写入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的写访问权。但我不想写任何东西。任何人都可以建议我通过访问级别进行哪些更改来删除此问题?
提前感谢您的帮助。
答案 0 :(得分:0)
使用以下命令查找具有777权限的hdfs目录(可能是/ tmp):
hdfs dfs -ls /
然后,一旦找到该目录,请将以下内容添加到使用以下命令连接到配置单元的命令:
--hiveconf hive.exec.scratchdir=<DIRECTORY FOUND IN PREVIOUS STEP>
答案 1 :(得分:0)
如果您处于kerberized环境中,则必须在kerberize db中使用您的用户名创建主体,并且您必须打开票证,
注意
您需要Kerberos管理员权限。
参考:
https://web.mit.edu/kerberos/krb5-1.12/doc/admin/admin_commands__/kadmin_local.html
然后你很高兴进入Hadoop环境但是,要读/写/执行Hadoop目录,你必须要么:
根据我在Hadoop,Linux甚至Windows服务器方面的经验,大多数问题都与权限问题有关。
我想加上关于此的引用:)
当我们生活在一个我们没有并且需要任何钥匙,锁,门,保险箱,密码,用户许可或任何安全相关时间/金钱浪费障碍的世界中时,我们可以说我们生活在在一个完美的社会中