Hi all,
I configured like below in hdfs-site.xml:
<property>
<name>dfs.namenode.kerberos.principal</name>
<value>nn/_HOST@site</value>
</property>
<property>
<name>dfs.web.authentication.kerberos.principal</name>
<value>nn/_HOST@site</value>
</property>
When start up namenode, I found, namenode will use principal :
nn/167-52-0-56@site to login, but the http server will use
nn/167-52-0-56.site@site<mailto:nn/167-52-0-56.site@site> to lgin, so it start
failed.
I checked the code,
Namenode will use socAddr.getHostName() to get hostname in
org.apache.hadoop.hdfs.server.namenode.NameNode.loginAsNameNodeUser.
But httpserver 's default hostname is 0.0.0.0, so in
org.apache.hadoop.security.SecurityUtil.replacePattern, it will get the
hostname by invoking getLocalHostName,there it use getCanonicalHostName(),
I think this inconsistent is wrong, can someone confirm this? Need raise one
bug ?
Thanks