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>host/_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<eclipse-javadoc:%E2%98%82=hadoop-2.0.0-alpha-src/hadoop-hdfs-project%5C/hadoop-hdfs%5C/src%5C/main%5C/java%3Corg.apache.hadoop.hdfs.server.namenode%7BNameNode.java%E2%98%83NameNode>.loginAsNameNodeUser.
But httpserver 's hostname is 0.0.0.0, so in
org.apache.hadoop.security.SecurityUtil<eclipse-javadoc:%E2%98%82=hadoop-2.0.0-alpha-src/hadoop-common-project%5C/hadoop-common%5C/src%5C/main%5C/java%3Corg.apache.hadoop.security%7BSecurityUtil.java%E2%98%83SecurityUtil>.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 ?