当Hadoop集群开启Kerberos后,跨集群访问需要配置Kerberos cross-realm(跨域访问)。
Kerberos跨域访问原理查看:Kerberos跨域原理
Hadoop集群配置Kerberos互信查看:hadoop集群配置Kerberos互信。在我们的实验中,参照该博客中的步骤不能实现Realm A(A.COM)中的用户访问Realm B(B.COM)中Server。例如在Realm A中使用test@A.COM访问hadoop@B.COM Server,在Realm A的kdc日志中观察到无法找到Hadoop/hostname1@B.COM Server,请求并未正常转发到Realm B中。通过排查,为缺少对服务hadoop/hostname1的映射,需要在kerb5.conf的domain_realm增加对hadoop/hostname1的映射。
[domain_realm]
.a.com=A.COM
a=A.COM
.b.com=B.COM
b.com=B.COM
#A.COM的kdc server
node1a141 = A.COM
node1a143 = A.COM
#B.COM的kdc server
node1a210 = B.COM
node1a202 = B.COM
#对hostname1(nanemode)的映射,如果需要访问集群B的其他Server,也需要配置相关映射
hostname1= B.COM
至此,可以使用Realm A中principal访问集群B的hdfs服务。
网友评论