A Docker image to quick start Apache Phoenix on Apache HBase to provide an SQL interface in a Kerberos secured single-node Hadoop cluster.
Apache Phoenix is a SQL skin over HBase delivered as a client-embedded JDBC driver targeting low latency queries over HBase data. Apache Phoenix takes your SQL query, compiles it into a series of HBase scans, and orchestrates the running of those scans to produce regular JDBC result sets. The table metadata is stored in an HBase table and versioned, such that snapshot queries over prior versions will automatically use the correct schema. Direct use of the HBase API, along with coprocessors and custom filters, results in performance on the order of milliseconds for small queries, or seconds for tens of millions of rows. MIT Kerberos is the authentication system of Hadoop that is widely used in production grade Hadoop clusters together with an authorisation system like Apache Ranger or Apache Sentry.
This image is very useful for Hadoop engineers that work with Apache Phoenix and HBase who want to have a real world scenario with highly secured Hadoop clusters in order to test their code locally to prevent the need of deploying it to remote servers.
The Docker image is also available on Docker Hub.
- Apache Hadoop - 2.7.4
- Apache Zookeeper - 3.4.10
- Apache HBase - 1.3.1
- Apache Phoenix - 4.11.0
Name | Value | Description |
---|---|---|
KRB_REALM |
EXAMPLE.COM |
The Kerberos Realm, more information here |
DOMAIN_REALM |
example.com |
The Kerberos Domain Realm, more information here |
KERBEROS_ADMIN |
admin/admin |
The KDC admin user |
KERBEROS_ADMIN_PASSWORD |
admin |
The KDC admin password |
KERBEROS_ROOT_USER_PASSWORD |
password |
The password of the Kerberos principal root which maps to the OS root user |
You can simply define these variables in the docker-compose.yml
.
Clone the Github project and run
docker-compose up -d
You can also build the Docker image locally with
docker build -t knappek/phoenix-secure .
Login to the Phoenix container with
docker exec -it <container-name> /bin/bash
Check whether you have a valid Kerberos ticket with klist
and create one with kinit
by entering the password afterwards, default is password
.
hbase shell
/usr/local/phoenix/bin/sqlline.py localhost
https://phoenix.apache.org/faq.html
docker-compose up
fails for the first time with the error
Login failure for nn/hadoop.docker.com@EXAMPLE.COM from keytab /etc/security/keytabs/nn.service.keytab: javax.security.auth.login.LoginException: Unable to obtain password from user
Stop the containers with docker-compose down
and start again with docker-compose up -d
.