hadoop - 在HDFS中检查权限

标签 hadoop sas

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

您的详细回答将不胜感激。

谢谢。

最佳答案

这个问题含糊不清,但我可以提供一些建议。首先,《 SAS企业指南》用户应从其工作中得到一个带有错误的结果SAS日志。

Hadoop群集发行版,版本,所使用的服务(例如,必须设置Knox,Sentry或Ranger安全产品)和身份验证(kerberos)都将有所作为。我将假定您没有kerberos问题,也没有运行Knox,Sentry,Ranger ect,并且您正在使用没有Kerberos的核心h​​adoop。如果您需要其他方面的帮助,则必须更加具体。

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

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

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

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

hadoop fs -ls /

您应该看到/ tmp文件夹以及权限,如果/ tmp文件夹的末尾带有“t”,则设置了粘性位,例如drwxrwxrwt。如果权限为drwxrwxrwx,则未设置粘性位,这对于消除权限问题很有帮助。

如果在/ tmp上设置了粘性位(通常默认情况下是默认值),则您必须对其进行远程控制,或者在SAS程序libname的Hadoop集群中设置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 super 用户身份运行以下内容(或在Hadoop中具有权限的一个)来在HDFS中创建一个/ user / username文件夹,然后将所有权设置为该用户。
hadoop fs -mkdir /用户/ sasdemo
hadoop fs -chown sasdemo:sasusers / user / sasdemo
然后您可以检查以确保它存在
hadoop fs -ls /用户/
基本上,无论他们在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 /用户/配置单元/仓库

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

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

关于hadoop - 在HDFS中检查权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207607/

相关文章:

java - hadoop中的Java ArrayList <String> .contains()

hadoop - Google File System中Hadoop Distributed File system的Distributed cache类似的功能是什么

sorting - 删除只有一个变量不同的观察结果

merge - 是否可以在 SAS Data Step 中使用不同的键将两个以上的数据集合并在一起?

sas - SAS 中的 last.group 语句

postgresql - 将 SAS 9.2 与 Amazon Redshift 连接

sas - 如何重新启动 SAS Object Spawner

hadoop - 启动Hbase 1.0.0 报错

java - 数据库连接应该在Reducer 中还是从Master 中建立?

hadoop - FAILED : Error in metadata: MetaException(message:Got exception: java.net.ConnectException 调用 localhost/127.0.0.1:54310 失败