【问题标题】:Hive Access Issue - Not able to access Hive CLI without Write AccessHive 访问问题 - 无法在没有写入访问权限的情况下访问 Hive CLI
【发布时间】:2020-07-07 01:45:33
【问题描述】:

我是 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 的写访问权限。但我不想写任何东西。谁能建议我可以通过我的访问级别进行哪些更改以消除此问题?

提前感谢您的帮助。

【问题讨论】:

  • 集群是否进行了kerberized?
  • 是的,我认为集群是kerberized

标签: hadoop hive


【解决方案1】:

使用以下命令找到一个有777权限的hdfs目录(可能是/tmp):

hdfs dfs -ls /

找到该目录后,将以下内容添加到连接到 hive 的命令中:

--hiveconf hive.exec.scratchdir=<DIRECTORY FOUND IN PREVIOUS STEP>

【讨论】:

  • 谢谢。我试过这个,但它现在给了我一个不同的错误:权限被拒绝:user=b001195,access=EXECUTE,inode="/user/hdfs/.hiveJars":hdfs:hdfs:drwx------。请建议我可以采取哪些步骤。由于字符限制,我很抱歉简短的消息。
  • 没问题的朋友!
  • @user3750170 - 请以不同的问题打开它
  • @PaulBack - 请在您的答案中添加一个解释,说明为什么需要写权限(“但我不想写任何东西”)。谢谢。
  • 您需要写访问权限的原因是 hive 在 hdfs 中生成中间文件,因为 MapReduce(底层数据处理引擎)是基于文件的,而且它在 hdfs 中暂存来自客户端的一些 jar。您可以粘贴您为hive.exec.scratchdir 设置的参数的hdfs dfs -ls 输出吗?
【解决方案2】:

如果您在 kerberized 环境中,您必须在 kerberize db 中使用您的用户名创建主体,并且您必须打开一张票,

注意

为此,您需要 Kerberos 管理员权限。

参考

https://web.mit.edu/kerberos/krb5-1.12/doc/admin/admin_commands__/kadmin_local.html

那么您可以进入 Hadoop 环境,但是要读取/写入/执行 Hadoop 目录,您必须是:

  • 成为目录的所有者
  • 在该目录的组中
  • 该目录必须授予其他组权限
  • 在 Hadoop 超级用户组中,(你不是你提到的)

根据我使用 Hadoop、Linux 甚至 Windows 服务器的经验,大多数问题都与权限问题有关。

我想添加我的报价:)

当我们实现生活在一个我们没有也不需要任何钥匙、锁、大门、保险箱、密码、用户权限或任何与安全相关的时间/金钱浪费障碍的世界中时,我们可以说我们生活在一个完美社会

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 2016-01-16
    • 1970-01-01
    • 2011-10-23
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    相关资源
    最近更新 更多