设置安全Hadoop集群 – Kerberos安全性

我成功安装了一个HDP 2.2集群(1个NM,3个DN和1个客户端)。 在客户端创build用于访问HDP集群的用户帐户,并检查这些用户是否可以通过SSH提交作业到客户端节点并运行样本作业。

在下一步中,我启用了Kerberos身份validation,并创build了与客户端用户对应的用户主体。 所有的事情都按预期顺利进行。 然后我以用户的身份login到客户端PC,生成Kerberos票据kinit,然后尝试运行样本作业,但是作业提交失败: user <user name> not found消息。

为了在Secure HDP集群中以用户身份运行作业,是否必须在集群中的所有节点上创build用户?

简而言之:

是的,当使用Kerberos运行Hadoop时,在TaskTracker(MRv1)或YARN节点pipe理器运行的每个节点上,经过身份validation的用户必须存在于passwd文件(或等效的用户目录,如LDAP)中。

对于MRv1,TaskTracker在每个任务启动之前启动一个称为任务控制器的程序。 任务控制器是一个setuid根工具,它允许mapred用户更改任务的运行时用户。 把它看作是TaskTracker的等价物

 sudo -u youruser /usr/bin/java yourtask 

如果在passwd文件中找不到用户,则任务控制器无法完成对该用户的切换,导致失败。

YARN有类似的机制。

在缺乏安全集群的情况下,TaskTracker不使用这个。 实际上,任务实际上是作为每个节点上的映射用户运行的,但JobTracker将其报告为提交用户。

你现在的select是:

  1. 将用户放在/ etc / passwd(和/ etc / shadow)中,通过adduser之类的东西来启动任务。
  2. 或者通过LDAP服务器将每个节点configuration为通过LDAP posixAccount标准存储帐户信息来进行密码查询。

你没有提到你正在使用哪个发行版,所以很难指出你比这更进一步。