gpt4 book ai didi

Hadoop hive : How to allow regular user continuously write data and create tables in warehouse directory?

转载 作者:可可西里 更新时间:2023-11-01 14:24:03 25 4
gpt4 key购买 nike

我在单个节点上运行 Hadoop 2.2.0.2.0.6.0-101。我正在尝试运行 Java MRD 程序,该程序在普通用户下从 Eclipse 将数据写入现有的 Hive 表。我得到异常:

org.apache.hadoop.security.AccessControlException: Permission denied: user=dev, access=WRITE, inode="/apps/hive/warehouse/testids":hdfs:hdfs:drwxr-xr-x

发生这种情况是因为普通用户对仓库目录没有写权限,只有hdfs用户有:

drwxr-xr-x   - hdfs hdfs          0 2014-03-06 16:08 /apps/hive/warehouse/testids
drwxr-xr-x - hdfs hdfs 0 2014-03-05 12:07 /apps/hive/warehouse/test

为了避免这种情况,我更改了仓库目录的权限,因此每个人现在都有写权限:

[hdfs@localhost wks]$ hadoop fs -chmod -R a+w /apps/hive/warehouse
[hdfs@localhost wks]$ hadoop fs -ls /apps/hive/warehouse
drwxrwxrwx - hdfs hdfs 0 2014-03-06 16:08 /apps/hive/warehouse/testids
drwxrwxrwx - hdfs hdfs 0 2014-03-05 12:07 /apps/hive/warehouse/test

这在一定程度上有所帮助,MRD 程序现在可以作为普通用户写入仓库目录,但只能写入一次。第二次尝试将数据写入同一张表时,我得到:

ERROR security.UserGroupInformation: PriviledgedActionException as:dev (auth:SIMPLE) cause:org.apache.hcatalog.common.HCatException : 2003 : Non-partitioned table already contains data : default.testids

现在,如果我删除输出表并在 hive shell 中重新创建它,我将再次获得不允许普通用户将数据写入该表的默认权限:

[hdfs@localhost wks]$ hadoop fs -ls /apps/hive/warehouse
drwxr-xr-x - hdfs hdfs 0 2014-03-11 12:19 /apps/hive/warehouse/testids
drwxrwxrwx - hdfs hdfs 0 2014-03-05 12:07 /apps/hive/warehouse/test

请告知 Hive 正确的配置步骤,允许程序作为普通用户在 Hive 仓库中执行以下操作:

  • 以编程方式创建/删除/重命名 Hive 表?
  • 以编程方式从 Hive 表读取/写入数据?

非常感谢!

最佳答案

如果您从 Hive 外部维护表,则将表声明为 external :

An EXTERNAL table points to any HDFS location for its storage, rather than being stored in a folder specified by the configuration property hive.metastore.warehouse.dir.

Hive 管理员可以创建表并将其指向您自己的用户拥有的 HDFS 存储位置,授予 Hive 从那里读取的权限。

一般来说,非特权用户无法执行未经授权的特权操作。任何这样的方式在技术上都是一种利用,你永远不应该依赖它:即使今天可能,它也可能很快就会被关闭。 Hive Authorization (和 HCatalog authorization )与 HDFS 授权正交。

您的申请也不正确,与授权问题无关。您正试图在同一张表中写入“两次”,这意味着您的应用程序无法正确处理分区。从 An Introduction to Hive’s Partitioning 开始.

关于Hadoop hive : How to allow regular user continuously write data and create tables in warehouse directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22321084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com