Phoenix: Kerberize Installation

(Last Updated On: )

In this tutorial I will show you how to use Kerberos with Phoenix. Before you begin ensure you have installed Kerberos Server, Hadoop, HBase and Zookeeper.

This assumes your hostname is “hadoop”

Install Phoenix

  1. wget http://apache.forsale.plus/phoenix/apache-phoenix-5.0.0-HBase-2.0/bin/apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
  2. tar -zxvf apache-phoenix-5.0.0-HBase-2.0-bin.tar.gz
  3. sudo mv apache-phoenix-5.0.0-HBase-2.0-bin /usr/local/phoenix/
  4. cd /usr/local/phoenix/

Setup .bashrc:

  1. sudo nano ~/.bashrc

Add the following to the end of the file.

#PHOENIX VARIABLES START
export PHOENIX_HOME=/usr/local/phoenix
export PHOENIX_CLASSPATH=$PHOENIX_HOME/*
export PATH=$PATH:$PHOENIX_HOME/bin
#PHOENIX VARIABLES END

  1. source ~/.bashrc

Link Files

  1. ln -sf $HBASE_CONF_DIR/hbase-site.xml $PHOENIX_HOME/bin/hbase-site.xml
  2. ln -sf $HADOOP_CONF_DIR/core-site.xml $PHOENIX_HOME/bin/core-site.xml
  3. ln -sf $PHOENIX_HOME/phoenix-5.0.0-HBase-2.0-server.jar $HBASE_HOME/lib/phoenix-5.0.0-HBase-2.0-server.jar

hbase-env.sh

  1. nano /usr/local/hbase/conf/hbase-env.sh
  2.  
  3. #Ensure the following env variables are set
  4.  
  5. export HADOOP_CONF_DIR=${HADOOP_CONF_DIR:-/usr/local/hadoop/etc/hadoop}
  6. export PHOENIX_CLASSPATH=${PHOENIX_CLASSPATH:-/usr/local/phoenix}
  7. export HBASE_CLASSPATH="$HBASE_CLASSPATH:$CLASSPATH:$HADOOP_CONF_DIR:$PHOENIX_CLASSPATH/phoenix-5.0.0-HBase-2.0-server.jar:$PHOENIX_CLASSPATH/phoenix-core-5.0.0-HBase-2.0.jar:$PHOENIX_CLASSPATH/phoenix-5.0.0-HBase-2.0-client.jar"

hbase-site.xml

  1. nano /usr/local/hbase/conf/hbase-site.xml
  2.  
  3. #Add the following properties
  4.  
  5. <property>
  6. <name>phoenix.functions.allowUserDefinedFunctions</name>
  7. <value>true</value>
  8. <description>enable UDF functions</description>
  9. </property>
  10. <property>
  11. <name>hbase.regionserver.wal.codec</name>
  12. <value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
  13. </property>
  14. <property>
  15. <name>hbase.region.server.rpc.scheduler.factory.class</name>
  16. <value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
  17. <description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
  18. </property>
  19. <property>
  20. <name>hbase.rpc.controllerfactory.class</name>
  21. <value>org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory</value>
  22. <description>Factory to create the Phoenix RPC Scheduler that uses separate queues for index and metadata updates</description>
  23. </property>
  24. <property>
  25. <name>hbase.defaults.for.version.skip</name>
  26. <value>true</value>
  27. </property>
  28. <property>
  29. <name>phoenix.queryserver.http.port</name>
  30. <value>8765</value>
  31. </property>
  32. <property>
  33. <name>phoenix.queryserver.serialization</name>
  34. <value>PROTOBUF</value>
  35. </property>
  36. <property>
  37. <name>phoenix.queryserver.keytab.file</name>
  38. <value>/etc/security/keytabs/hbase.service.keytab</value>
  39. </property>
  40. <property>
  41. <name>phoenix.queryserver.kerberos.principal</name>
  42. <value>hbase/hadoop@REALM.CA</value>
  43. </property>
  44. <property>
  45. <name>hoenix.queryserver.http.keytab.file</name>
  46. <value>/etc/security/keytabs/hbaseHTTP.service.keytab</value>
  47. </property>
  48. <property>
  49. <name>phoenix.queryserver.http.kerberos.principal</name>
  50. <value>hbaseHTTP/hadoop@REALM.CA</value>
  51. </property>
  52. <property>
  53. <name>phoenix.queryserver.dns.nameserver</name>
  54. <value>hadoop</value>
  55. </property>
  56. <property>
  57. <name>phoenix.queryserver.dns.interface</name>
  58. <value>enp0s3</value>
  59. </property>
  60. <property>
  61. <name>phoenix.schema.mapSystemTablesToNamespace</name>
  62. <value>true</value>
  63. </property>
  64. <property>
  65. <name>phoenix.schema.isNamespaceMappingEnabled</name>
  66. <value>true</value>
  67. </property>

sqlline.py

  1. sqlline.py hadoop:2181:/hbase-secure:hbase/hadoop@GAUDREAULT_KDC.CA:/etc/security/keytabs/hbase.service.keytab