Search code examples
amazon-web-serviceshbasekerberosapache-phoenix

AWS EMR Phoenix Kerberos not working


I am trying to get Phoenix work with kerberos. Kerberos realm are setup , i am able to generate tickets from keytab /etc/hbase.keytab

but phoenix sqlline client is giving following error

Error: org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations (state=,code=0)

I have done following changes

# Issue ticket for principal

kinit -t /etc/hbase.keytab hbase/HOSTNAME.RealmName@RealmName


<!-- Configuring Phoenix Kerberos Properties in Hbase_site.xml --> 

<property>
        <name>phoenix.queryserver.kerberos.principal</name>
        <value>hbase/_HOST@RealmName</value>
  </property>

  <property>
        <name>phoenix.queryserver.kerberos.keytab</name>
        <value>/etc/hbase.keytab</value>
   </property>

  <property>
        <name>zookeeper.znode.parent</name>
        <value>/hbase-secure</value>
   </property>   

  <property>
        <name>phoenix.queryserver.keytab.file</name>
        <value>/etc/hbase.keytab</value>
  </property>

   <property>
        <name>phoenix.queryserver.http.keytab.file</name>
        <value>/etc/hbase.keytab</value>
   </property>

   <property>
        <name>phoenix.queryserver.kerberos.http.principal</name>
        <value>hbase/_HOST@RealmName</value>
   </property>   

   <property>
        <name>phoenix.queryserver.dns.nameserver</name>
        <value>HOSTNAME.RealmName</value>
   </property>   

   <property>
        <name>phoenix.queryserver.dns.interface</name>
        <value>eth0</value>
   </property>



#   Set hbase conf path (This seems to be a bug in EMR. This should be set by default.)
                sudo vi ~/.bashrc
add        “export HBASE_CONF_DIR=/etc/hbase/conf/ “
                source ~/.bashrc

Starting Phoenix Client

/usr/lib/phoenix/bin/sqlline.py HOSTNAME.RealmName:2181:/hbase-secure:hbase/HOSTNAME.RealmName@RealmName:/etc/hbase.keytab

Solution

  • This seems to be a bug in EMR 5.11
    The issue was resolved after setting HBASE_CONF_DIR in ~/.bashrc

    sudo vi ~/.bashrc
    add “export HBASE_CONF_DIR=/etc/hbase/conf/“
    source ~/.bashrc
    

    run phoenix

    /usr/lib/phoenix/bin/sqlline.py