Could you spent one minute to check whether below code will cause issue or not?
In org.apache.hadoop.hdfs.server.namenode.NameNode.loginAsNameNodeUser(), it use socAddr.getHostName() to get _HOST, But in org.apache.hadoop.security.SecurityUtil.replacePattern(), in getLocalHostName(), it use getCanonicalHostName() to get _HOST Meanwhile I will check what you said. Thank you~ -----邮件原件----- 发件人: Arpit Gupta [mailto:ar...@hortonworks.com] 发送时间: 2012年7月27日 10:03 收件人: common-dev@hadoop.apache.org 主题: Re: regarding _HOST token replacement in security hadoop you need to use HTTP/_h...@site.com as that is the principal needed by spnego. So you would need create the HTTP/_HOST principal and add it to the same keytab (/home/hdfs/keytab/nn.service.keytab). -- Arpit Gupta Hortonworks Inc. http://hortonworks.com/ On Jul 26, 2012, at 6:54 PM, Wangwenli <wangwe...@huawei.com> wrote: > Thank yours response. > I am using hadoop-2.0.0-alpha from apache site. In which version it should > configure with HTTP/_h...@site.com? I think not in hadoop-2.0.0-alpha. > Because I login successful with other principal, pls refer below log: > > 2012-07-23 22:48:17,303 INFO > org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler: > Login using keytab /home/hdfs/keytab/nn.service.keytab, for principal > nn/167-52-0-56.site@site > 2012-07-23 22:48:17,310 INFO > org.apache.hadoop.security.authentication.server.KerberosAuthenticationHandler: > Initialized, principal [nn/167-52-0-56.site@site] from keytab > [/home/hdfs/keytab/nn.service.keytab] > > > -----邮件原件----- > 发件人: Arpit Gupta [mailto:ar...@hortonworks.com] > 发送时间: 2012年7月27日 9:22 > 收件人: common-dev@hadoop.apache.org > 主题: Re: regarding _HOST token replacement in security hadoop > > what version of hadoop are you using? > > also > > dfs.web.authentication.kerberos.principal should be set to HTTP/_h...@site.com > > -- > Arpit Gupta > Hortonworks Inc. > http://hortonworks.com/ > > On Jul 26, 2012, at 6:11 PM, Wangwenli <wangwe...@huawei.com> wrote: > >> 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 >> >