我是Hadoop的新手。其中一个SAS用户将文件从SAS Enterprise Guide保存到Hadoop时出现问题,并且我被要求检查HDFS中的权限,如果它们已被正确授予。以某种方式确保允许用户从一侧移动并将其添加到另一侧。 我应该在SAS服务器上检查哪里?如果是文件或我该如何查看?
您的回答将更加受到欢迎。
感谢。
答案 0 :(得分:1)
这个问题很模糊,但我可以提出一些建议。首先,SAS Enterprise Guide用户应该从他的工作中得到SAS日志,并且有任何错误。
正在使用的Hadoop集群分发版本,服务(例如,必须设置Knox,Sentry或Ranger安全产品)和身份验证(kerberos)都会产生影响。我将假设您没有kerberos问题,也没有运行Knox,Sentry,Ranger等,而您正在使用没有Kerberos的核心hadoop。如果您需要帮助,那么您必须更具体。
如果连接到配置单元,并且未指定任何选项,则可能是/ user / hive / warehouse,或/ user / username文件夹。
在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。
如果您的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。