It's seems that the problems is with the initialization of the values
for Kerberos, with the class KerberosName.
Where you have the key file and principal name for Kerberos.
In HBase, there are four parameters for this:
- hbase.master.keytab.file: Full path to the kerberos keytab file to use
for logging in the configured HMaster server principal.
- hbase.master.kerberos.principal: Ex. "hbase/[email protected]". The
kerberos principal name that should be used to run the HMaster process.
The principal name should be in the form: user/hostname@DOMAIN. If
"_HOST" is used as the hostname portion, it will be replaced with the
actual hostname of the running instance.
- hbase.regionserver.keytab.file: Full path to the kerberos keytab file
to use for logging in the configured HRegionServer server principal.
- hbase.regionserver.kerberos.principal: Ex. "hbase/[email protected]".
The kerberos principal name that should be used to run the HRegionServer
process. The principal name should be in the form: user/hostname@DOMAIN.
If "_HOST" is used as the hostname portion, it will be replaced with the
actual hostname of the running instance. An entry for this principal
must exist in the file specified in hbase.regionserver.keytab.file
Looking on the source of this class (KerberosName), it throws a
IOException by several reason:
- The files and these parameters are empty values
- There is not matching rule in the Kerberos realm server
- There is not shortname for the Kerberos server, etc
Look at the source and see what it's missing.
Regards
On 05/20/2012 03:45 PM, Ben Cuthbert wrote:
All I just upgraded hbase and hadoop to hbase(0.92.1) and hadoop (1.0.3)
hbase and hadoop look to come up correctly. but when I start my application I
am getting the error below.
I have copied the hbase-security settings into the classpath.
core-site.xml is set to
configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>${celer.hadoop.data.dir}</value>
<description>A base for other temporary
directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://${celer.hadoop.master.address}:${celer.hadoop.bind.port}</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem
implementation. The
uri's scheme determines the config property
(fs.SCHEME.impl) naming
the FileSystem implementation class. The uri's
authority is used to
determine the host, port, etc. for a filesystem.
</description>
</property>
<!-- Security configuration -->
<property>
<name>hadoop.security.authorization</name>
<value>false</value>
<description></description>
</property>
<property>
<name>hadoop.security.authentication</name>
<value>simple</value>
<description></description>
</property>
<property>
<name>hadoop.security.token.service.use_ip</name>
<value>true</value>
<description></description>
</property>
</configuration>
2012-05-20 20:43:20,914 [main] INFO
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation -
getMaster attempt 2 of 10 failed; retrying after sleep of 1000
java.io.IOException: failure to login
at
org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:490)
at
org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:452)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.util.Methods.call(Methods.java:37)
at org.apache.hadoop.hbase.security.User.call(User.java:586)
at org.apache.hadoop.hbase.security.User.callStatic(User.java:576)
at org.apache.hadoop.hbase.security.User.access$400(User.java:50)
at
org.apache.hadoop.hbase.security.User$SecureHadoopUser.<init>(User.java:393)
at
org.apache.hadoop.hbase.security.User$SecureHadoopUser.<init>(User.java:388)
at org.apache.hadoop.hbase.security.User.getCurrent(User.java:139)
at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:280)
at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:332)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getMaster(HConnectionManager.java:642)
at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:106)
Caused by: javax.security.auth.login.LoginException:
java.lang.NoClassDefFoundError: Could not initialize class
org.apache.hadoop.security.KerberosName
at org.apache.hadoop.security.User.<init>(User.java:44)
at org.apache.hadoop.security.User.<init>(User.java:39)
at
org.apache.hadoop.security.UserGroupInformation$HadoopLoginModule.commit(UserGroupInformation.java:130)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
at
javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
at javax.security.auth.login.LoginContext$5.run(LoginContext.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at
javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:703)
at javax.security.auth.login.LoginContext.login(LoginContext.java:576)
at
org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:471)
at
org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:452)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.util.Methods.call(Methods.java:37)
at org.apache.hadoop.hbase.security.User.call(User.java:586)
at org.apache.hadoop.hbase.security.User.callStatic(User.java:576)
at org.apache.hadoop.hbase.security.User.access$400(User.java:50)
at
org.apache.hadoop.hbase.security.User$SecureHadoopUser.<init>(User.java:393)
at
org.apache.hadoop.hbase.security.User$SecureHadoopUser.<init>(User.java:388)
at org.apache.hadoop.hbase.security.User.getCurrent(User.java:139)
at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:280)
at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:332)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getMaster(HConnectionManager.java:642)
at org.apache.hadoop.hbase.client.HBaseAdmin.<init>(HBaseAdmin.java:106)
10mo. ANIVERSARIO DE LA CREACION DE LA UNIVERSIDAD DE LAS CIENCIAS
INFORMATICAS...
CONECTADOS AL FUTURO, CONECTADOS A LA REVOLUCION
http://www.uci.cu
http://www.facebook.com/universidad.uci
http://www.flickr.com/photos/universidad_uci
--
Marcos Luis OrtÃz Valmaseda
Data Engineer&& Sr. System Administrator at UCI
http://marcosluis2186.posterous.com
http://www.linkedin.com/in/marcosluis2186
Twitter: @marcosluis2186
10mo. ANIVERSARIO DE LA CREACION DE LA UNIVERSIDAD DE LAS CIENCIAS
INFORMATICAS...
CONECTADOS AL FUTURO, CONECTADOS A LA REVOLUCION
http://www.uci.cu
http://www.facebook.com/universidad.uci
http://www.flickr.com/photos/universidad_uci