2016-03-03 98 views
0

在我的组织,访问我们的网关下面的Hadoop集群:映射帐户

sudo su - 

cd /etc/username/ 

kinit some_string/instance -k -t some_string.keytab 

hadoop fs -ls 

这工作完全正常,但我想了解究竟是什么正在进行。

当我做'whoami'显然它显示'根'。但是,在HDFS上创建上述方式的任何文件都将拥有者视为“some_string”,并将其组为“hdfs”。我既不能像任何其他用户那样启动也不能访问HDFS。这是为什么?

这是因为:Hadoop的HDFS守护进程被映射到kerberos主体(并且该主体的权证只能作为root用户访问?)并且该主体也映射到操作系统帐户some_string,这就是我所看到的HDFS上文件的所有者?如果是的话,定义的链接在哪里(hadoop守护进程主要os帐户)

我试着用google搜索很多,但找不到明确的答案,我的困惑。即使我用自己的用户登录HUE,我也没有对这些文件的写入权限,这也是我想了解如何解决的问题。

谢谢。

编辑:

$ klist 
Ticket cache: FILE:/tmp/krb5cc_0 
Default principal:  some_string/[email protected] 

Valid starting  Expires   Service principal 
03/02/16 21:06:19 03/03/16 21:06:19  krbtgt/[email protected] 
renew until 03/02/16 21:06:19 

回答

0

所以,当你执行下面的命令

kinit some_string/instance -k -t some_string.keytab 

您所要求的,存储在您的some_string.keytab文件,你可以看看主要的票通过使用下面的命令

klist -k some_string.keytab 

它将显示您输出的主体名称和版本。 Keytab文件也包含密码,所以它不需要输入密码。

而第二个问题将是从klist的命令的答案,它会显示你的主要这就好比用户/ _host @境界所以你的情况用户some_string,当你得到some_string用户的票你some_string对于kerberos和你的命令将作为some_string用户执行,所以创建的文件的所有者将是some_string。

你也可以列出你已经使用klist的命令查看输出下面的门票:

[[email protected] ~]# klist -k some_Name.keytab 
Keytab name: FILE:some_Name.keytab 
KVNO Principal 
---- -------------------------------------------------------------------------- 
1 myuser/[email protected] 

这里我的密钥表myuser的用户和主机是MYHOSTNAME主机。

+0

我给问题添加了klist,你说'...在你的情况下用户是hdfs ...',但看起来不是。在校长中,用户是'some_string'。 – Gadam

+0

@Gadam让我知道klist -k的输出some_string.keytab –

+0

对于响应延迟感到抱歉。这里是:17:20:20 $ klist -k some_string.keytab Keytab名称:FILE:some_string.keytab KVNO Principal ---- ----------------- -------------------------------------------------- ------- 2 some_string/[email protected]。CORP(这最后一行重复6次) – Gadam