This page documents how to do Impala development inside a Docker container. This allows you to isolate your development environment from the rest of your system. If you want to build a containerized version of Impala suitable for production deployment with one daemon process per container, see Build and Test for Daemon Docker Containers.

If you don't have an Ubuntu 14.04 or 16.04 environment available, you can use Docker to develop. First, install Docker as you normally would. Then,

docker pull ubuntu:16.04
# SYS_TIME is required for kudu to work. The container will be able to change the time of the host.
docker run --cap-add SYS_TIME --interactive --tty --name impala-dev ubuntu:16.04 bash

Now, within the container:

apt-get update
apt-get install sudo
adduser --disabled-password --gecos '' impdev
echo 'impdev ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
su - impdev

Then, as impdev in the container:

sudo apt-get --yes install git
git clone ~/Impala
cd ~/Impala
export IMPALA_HOME=`pwd`

# See for developing Impala.


# See for testing Impala.
source $IMPALA_HOME/bin/
$IMPALA_HOME/ -noclean -notests
$IMPALA_HOME/bin/ -create_metastore -create_sentry_policy_db

When that's done, start developing! When you're ready to pause, in a new terminal in the host:

docker commit impala-dev && docker stop impala-dev

When you're ready to get back to work:

docker start --interactive impala-dev

If instead of committing your work and stopping the container, you just want to detach from it, use ctrl-p ctrl-q. You can re-attach using the start command.