我成功安装了一个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是:
你没有提到你正在使用哪个发行版,所以很难指出你比这更进一步。