检查hdfs中的权限

tquggr8v  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(350)

我是hadoop的新手。其中一个sas用户在将sas enterprise guide中的文件保存到hadoop时遇到了问题,我被要求检查hdfs中是否正确授予了权限。以某种方式确保允许用户从一侧移动并将其添加到另一侧。我应该在哪里检查sas服务器上的数据?如果它是一个文件或我如何检查它?
如能详细答复,将不胜感激。
谢谢。

ogq8wdun

ogq8wdun1#

这个问题有点含糊不清,但我可以提出一些建议。首先,sas enterprise guide用户应该有一个包含错误的sas日志。
hadoop集群分布、版本、所使用的服务(例如,必须设置knox、sentry或ranger安全产品)和身份验证(kerberos)都会产生影响。我假设您没有kerberos问题,也没有运行knox、sentry、ranger等,并且您使用的是没有kerberos的核心hadoop。如果你需要帮助,你必须更具体。

1. 您必须检查hadoop端对此的权限。你必须知道他们在哪里把数据放到hadoop中。这些是hdfs中的路径,而不是服务器文件系统。

如果连接到配置单元,但未指定任何选项,则可能是/user/hive/warehouse或/user/username文件夹。

2-默认情况下启用hadoop stickybit可防止用户在hdfs中写入/tmp。一些sas程序写入hdfs中的/tmp文件夹以保存元数据和其他信息。

在hadoop节点上运行以下命令以检查hdfs中的基本权限。

hadoop fs -ls /

您应该看到/tmp文件夹以及权限,如果/tmp文件夹的末尾有一个“t”,则设置了粘滞位,如drwxrwt。如果权限是drwxrwx,则不设置粘滞位,这有助于消除权限问题。
如果您在/tmp上设置了一个粘性位(默认情况下通常是这样),那么您必须将其远程设置,或者在sas programs libname for hadoop集群中设置一个hdfs temp目录。
关于sas/access上的libname选项,请参阅下面的sas/access to hadoop指南® 9.4对于关系数据库:参考,第九版|用于hadoop的libname语句细节
要删除/更改hadoop粘性位,请参阅以下文章,或从hadoop供应商处获取。在cdh5中配置hadoop安全性第14步:在hdfs目录上设置粘性位。不过,您将需要执行与本文相反的操作来删除粘滞位。

2-sas+身份验证+用户-

如果您的hadoop集群是使用kerberos保护的,那么每个sas用户都有一个有效的kerberos票证来与任何hadoop服务对话。sas hadoop支持页面上有许多关于kerberos和其他资源的指南。对于kerberos,他们需要kerberos票证,而不是用户名或密码。
sas9.4支持hadoop参考
如果您不使用kerberos,那么您可以使用hadoop默认值no authentication,或者一些服务(如hive)可以启用ldap。
如果没有启用ldap,那么可以使用libname语句中的任何hadoop用户名进行连接,例如hive、hdfs或yarn。您不需要输入任何密码,并且此用户不必是sas用户帐户。这是因为它们默认的hadoop配置不需要身份验证。您可以使用另一个帐户,例如在hadoop集群中为sas用户创建的帐户。如果这样做,则必须在hdfs中创建/user/username文件夹,方法是以hdfs超级用户或hadoop中具有权限的超级用户身份运行以下内容,然后将所有权设置为该用户。hadoop fs-mkdir/user/sasdemo hadoop fs-chownsasdemo:sasusers /user/sasdemo 然后您可以使用hadoopfs-ls/user/检查它是否存在,基本上,sas程序中libname语句中的任何用户都必须在hadoop中有一个users主文件夹。hadoop用户将在安装时默认创建一个,但是您需要为任何其他用户创建它们。
如果您将ldap与hadoop一起使用(从我看到的情况来看并不常见),那么在libname语句中必须有ldap用户名和用户帐户的密码。如果你愿意的话,我相信你可以对密码进行编码。
从sas程序测试到hadoop的连接您可以修改以下sas代码来执行一个基本测试,使用sas enterprise guide将saselp数据集之一通过到hiveserver2的串行连接放入hadoop。这只是一个非常基本的测试,但应该证明您可以编写hadoop。

libname myhive hadoop server=hiveserver.example.com port=10000 schema=default user=hive;
data myhive.cars;set sashelp.cars;run;

如果需要,可以使用所选的hadoop客户机在hadoop中存储数据的位置(可能是/user/hive/warehouse)查找数据。hadoop fs-ls/用户/配置单元/仓库
和/或您应该能够运行sas enterprise guide中的proc contents来显示刚刚放入hadoop的hadoop配置单元表的内容。proc contents data=myhive.cars;运行;
希望这有帮助,祝你好运!

s1ag04yj

s1ag04yj2#

为了找到可以访问hdfs文件的合适组,我们需要检查哨兵。
文件acl在sentry中有描述,因此如果您想向任何人授予/撤销访问权,可以通过它来完成。
左侧是文件位置,右侧是组的acl。

相关问题