gpt4 book ai didi

hadoop - Google Cloud 上的 Hive 无法与 hive 以外的任何用户访问数据

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

我在 Hadoop 上运行 Hive,并使用 bdutil 版本 1.3.1 成功安装在 Google Cloud Storage 上。我运行了以下命令:

./bdutil -e platforms/hdp/ambari_env.sh deploy

作为 hive 用户,我可以毫不费力地创建/删除数据库和表:

hive> create database db_final location 'gs://cip-hadoop-dev-data/apps/hive/warehouse/db_final';
OK
Time taken: 1.816 seconds

但是如果我尝试以任何其他用户身份访问数据库,我会收到以下错误:

hive> use db_final;
FAILED: SemanticException MetaException(message:java.security.AccessControlException: Permission denied: user=andy, path="gs://cip-hadoop-dev-data/apps/hive/warehouse/db_final":hive:hive:drwx------)

我可以看出这是权限错误,因为文件权限是 700,上面列出并从命令行确认:

[andy@hadoop-m ~]$ hdfs dfs -ls gs:///apps/hive/warehouse/
drwx------ - andy andy 0 2015-09-11 01:46 gs:///apps/hive/warehouse/db_final

我已经尝试使用 hdfs 命令更改文件的权限,但它们保持不变:

[andy@hadoop-m ~]$ sudo hdfs dfs -chmod 750 gs:///apps/hive/warehouse/db_final
[andy@hadoop-m ~]$ hdfs dfs -ls gs:///apps/hive/warehouse/
drwx------ - andy andy 0 2015-09-11 01:46 gs:///apps/hive/warehouse/db_final

我还向用户授予了对数据库的 SELECT 权限,这成功了,但是当我尝试使用数据库时仍然遇到同样的错误。

这似乎有点类似于 this issue , 但我使用的是最新版本的 bdutil,所以我不知道是否是同一个问题。我还确认 dfs.permissions.enabled 已设置为 false。

因此,如果我以 hive 用户身份运行它,一切似乎都正常,但我不想将 hive 用户名/密码发送给需要访问数据库的每个人。

我还应该尝试/研究什么?

谢谢你的帮助

最佳答案

确实,部分问题是 GCS 连接器实际上没有 posix/hdfs 权限;它只报告静态权限,而它实际上使用与 GCE VM 上的 linux 帐户无关的 oauth2 凭据进行身份验证。

我们最近添加了一项功能,允许使用 fs.gs.reported.permissions 修改 GCS 连接器报告的权限:https://github.com/GoogleCloudPlatform/bigdata-interop/commit/93637a136cdb7354b1a93cc3c7a61c42b0bc78a6

它尚未正式发布,但您可以尝试按照此处的说明构建快照:https://github.com/GoogleCloudPlatform/bigdata-interop

mvn -P hadoop2 package

然后用您的新构建替换现有的 GCS 连接器 jar 文件。或者,为了进行快速测试,您可以使用 temporary snapshot build we have ,请记住提供的链接将在截止日期后停止工作,并且快照构建尚未针对生产工作负载进行验证。如果您只想首先使用快照构建来验证概念验证,那么应该很快就会有一个正式版本,它将提供一个干净的 jarfile 构建。

一旦您替换了 jar 文件,您可以尝试修改 core-site.xml 以将 fs.gs.reported.permissions 设置为类似 755 的内容 甚至 777 作为权限;请注意,将 GCS 连接器报告的权限设置为宽松实际上不会泄漏比其他方式更大的访问权限,因为 GCS 访问仅以 oauth2 凭据为条件(如果您在 GCE VM 上,则可能通过服务帐户)。唯一的目标是找到报告的权限,使您使用的 Hadoop 工具开心(有些工具可能会提示 777 过于宽松)。

关于hadoop - Google Cloud 上的 Hive 无法与 hive 以外的任何用户访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32514464/

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