检查HDFS中的权限

时间:2017-02-13 15:26:19

标签: hadoop sas

我是Hadoop的新手。其中一个SAS用户将文件从SAS Enterprise Guide保存到Hadoop时出现问题,并且我被要求检查HDFS中的权限,如果它们已被正确授予。以某种方式确保允许用户从一侧移动并将其添加到另一侧。 我应该在SAS服务器上检查哪里?如果是文件或我该如何查看?

您的回答将更加受到欢迎。

感谢。

2 个答案:

答案 0 :(得分:1)

这个问题很模糊,但我可以提出一些建议。首先,SAS Enterprise Guide用户应该从他的工作中得到SAS日志,并且有任何错误。

正在使用的Hadoop集群分发版本,服务(例如,必须设置Knox,Sentry或Ranger安全产品)和身份验证(kerberos)都会产生影响。我将假设您没有kerberos问题,也没有运行Knox,Sentry,Ranger等,而您正在使用没有Kerberos的核心h​​adoop。如果您需要帮助,那么您必须更具体。

1。你必须检查hadoop端的权限。您必须知道他们将数据放入hadoop的位置。这些是HDFS中的路径,而不是服务器文件系统。

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

2 - 默认情况下启用Hadoop Stickybit会阻止用户在HDFS中写入/ tmp。某些SAS程序写入hdfs中的/ tmp文件夹以保存元数据以及其他信息。

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

hadoop fs -ls /

如果/ tmp文件夹中有" t"您应该看到/ tmp文件夹以及权限。最后设置粘滞位,例如drwxrwxrwt。如果权限是drwxrwxrwx,则不设置粘滞位,这样可以消除权限问题。

如果在/ tmp上设置了粘滞位(通常是默认设置),则必须将其远程设置,或者在Hadoop集群的SAS程序库名中设置HDFS TEMP目录。

请参阅以下SAS /访问Hadoop指南,了解SAS/ACCESS® 9.4 for Relational Databases: Reference, Ninth Edition | LIBNAME Statement Specifics for Hadoop上的libname选项

要删除/更改Hadoop粘滞位,请参阅以下文章或Hadoop供应商。 Configuring Hadoop Security in CDH 5 Step 14: Set the Sticky Bit on HDFS Directories。您将需要执行与本文相反的操作来删除stickybit。

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

如果您的Hadoop集群使用Kerberos进行保护,那么每个SAS用户都有一张有效的kerberos票证可以与任何Hadoop服务进行通信。 SAS Hadoop支持页面上有许多关于Kerberos的指南以及其他资源。使用kerberos,他们需要一张kerberos票,而不是用户名或密码。

SAS 9.4 Support For Hadoop Reference

如果您没有使用kerberos,那么您可以要么Hadoop默认不进行身份验证,要么某些服务(如Hive)可以启用LDAP。

如果您未启用LDAP,则可以使用libname语句中的任何Hadoop用户名进行连接,例如hive,hdfs或yarn。您无需输入任何密码,此用户也不必是SAS用户帐户。这是因为他们默认Hadoop配置不需要身份验证。您可以使用其他帐户,例如您可能在Hadoop集群中为SAS用户创建的帐户。如果这样做,您必须通过运行类似以下内容的HDFS超级用户在HDFS中创建/ user / username文件夹,或者在Hadoop中具有权限的文件夹然后将所有权设置为用户。     hadoop fs -mkdir / user / sasdemo     hadoop fs -chown sasdemo:sasusers / user / sasdemo 然后你可以检查以确保它存在     hadoop fs -ls / user / 基本上,他们在SAS程序的libname语句中拥有的用户必须在hadoop中拥有用户主文件夹。 Hadoop用户将在安装时默认创建一个,但您需要为任何其他用户创建它们。

如果您正在使用LDAP与Hadoop(不是我见过的那样),那么您必须在libname语句中拥有LDAP用户名以及用户帐户的密码。我相信如果你愿意,你可以编码密码。

从SAS程序测试与Hadoop的连接 您可以修改以下SAS代码以执行基本测试,以使用SAS Enterprise Guide使用与HiveServer2的串行连接将其中一个sashelp数据集放入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 / user / hive / warehouse

和/或者您应该能够在SAS Enterprise Guide中运行proc内容,以显示刚刚放入Hadoop的Hadoop Hive表的内容。     PROC CONTENTS DATA = myhive.cars; run;

希望这有帮助,祝你好运!

答案 1 :(得分:0)

要找到可以访问HDFS中文件的正确组,我们需要检查Sentry。

文件ACL在Sentry中有描述,所以如果你想给予/撤销对任何人的访问权限,可以通过它来完成。

左侧是文件位置,右侧是组的ACL。