Please ask this question in u...@hbase.apache.org, you would get better 
response there. 

Thanks
Devaraj k


-----Original Message-----
From: Lanati, Matteo [mailto:matteo.lan...@lrz.de] 
Sent: 29 August 2013 14:03
To: <user@hadoop.apache.org>
Subject: HBase client with security

Hi all,

I set up Hadoop (1.2.0), Zookeeper (3.4.5) and HBase (0.94.8-security) with 
security.
HBase works if I launch the shell from the node running the master, but I'd 
like to use it from an external machine.
I prepared one, copying the Hadoop and HBase installation folders and adapting 
the path (indeed I can use the same client to run MR jobs and interact with 
HDFS).
Regarding HBase client configuration:

- hbase-site.xml specifies

  <property>
    <name>hbase.security.authentication</name>
    <value>kerberos</value>
  </property>
  <property>
    <name>hbase.rpc.engine</name>
    <value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master.hadoop.local,host49.hadoop.local</value>
  </property>

where the zookeeper hosts are reachable and can be solved via DNS. I had to 
specify them otherwise the shell complains about 
"org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode 
= ConnectionLoss for /hbase/hbaseid"

- I have a keytab for the principal I want to use (<user running hbase/my 
client hostname@MYREALM>), correctly addressed by the file 
hbase/conf/zk-jaas.conf. In hbase-env.sh, the variable HBASE_OPTS points to 
zk-jaas.conf.

Nonetheless, when I issue a command from a HBase shell on the client machine, I 
got an error in the HBase master log

2013-08-29 10:11:30,890 WARN org.apache.hadoop.ipc.HBaseServer: IPC Server 
listener on 60000: readAndProcess threw exception 
org.apache.hadoop.security.AccessControlException: Authentication is required. 
Count of bytes read: 0
org.apache.hadoop.security.AccessControlException: Authentication is required
        at 
org.apache.hadoop.hbase.ipc.SecureServer$SecureConnection.readAndProcess(SecureServer.java:435)
        at 
org.apache.hadoop.hbase.ipc.HBaseServer$Listener.doRead(HBaseServer.java:748)
        at 
org.apache.hadoop.hbase.ipc.HBaseServer$Listener$Reader.doRunLoop(HBaseServer.java:539)
        at 
org.apache.hadoop.hbase.ipc.HBaseServer$Listener$Reader.run(HBaseServer.java:514)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)

It looks like there's a mismatch between the client and the master regarding 
the authentication mechanism. Note that from the same client machine I can 
launch and use a Zookeeper shell.
What am I missing in the client configuration? Does /etc/krb5.conf play any 
role into this?
Thanks,

Matteo


Matteo Lanati
Distributed Resources Group
Leibniz-Rechenzentrum (LRZ)
Boltzmannstrasse 1
85748   Garching b. München     (Germany)
Phone: +49 89 35831 8724

Reply via email to