blob: 6c34ea561376f801cee15858771129b20e76191c [file] [log] [blame] [view]
# hawq-docker
hawq-docker is based on repo *hawq-devel-env*. It is the docker images and scripts to help developers of Apache HAWQ to setup building and testing environment with docker.
Both CentOS 7 and CentOS 6 are supported.
Change variable **OS_VERSION** (:= centos7 OR centos6) in Makefile to switch between CentOS 7 and CentOS 6.
Take CentOS 7 as an example below.
# Install docker
* following the instructions to install docker.
https://docs.docker.com/
# Setup build and test environment
* clone hawq repository
```
git clone https://github.com/apache/hawq.git .
cd hawq/contrib/hawq-docker
```
* Get the docker images
```
make pull (recommended)
OR
make build
```
(Command `make pull` is to pull docker images from Docker Hub, while command `make build` is to build docker images locally. In general, `make pull` is faster than `make build`.)
* setup a 5 nodes virtual cluster for Apache HAWQ build and test.
```
make run
```
Now let's have a look about what we creted.
```
[root@localhost hawq-docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
382b2b3360d1 hawq/hawq-test:centos7 "entrypoint.sh bash" 2 minutes ago Up 2 minutes centos7-datanode3
86513c331d45 hawq/hawq-test:centos7 "entrypoint.sh bash" 2 minutes ago Up 2 minutes centos7-datanode2
c0ab10e46e4a hawq/hawq-test:centos7 "entrypoint.sh bash" 2 minutes ago Up 2 minutes centos7-datanode1
e27beea63953 hawq/hawq-test:centos7 "entrypoint.sh bash" 2 minutes ago Up 2 minutes centos7-namenode
1f986959bd04 hawq/hawq-dev:centos7 "/bin/true" 2 minutes ago Created centos7-data
```
**centos7-data** is a data container and mounted to /data directory on all other containers to provide a shared storage for the cluster.
# Build and Test Apache HAWQ
* attach to namenode
```
docker exec -it centos7-namenode bash
```
* check if HDFS working well
```
sudo -u hdfs hdfs dfsadmin -report
```
* clone Apache HAWQ code to /data direcotry
```
git clone https://github.com/apache/hawq.git /data/hawq
```
* build Apache HAWQ
```
cd /data/hawq
./configure --prefix=/data/hawq-dev
make
make install
```
(When you are using CentOS 6, run command `scl enable devtoolset-2 bash` before
configuring hawq and run command `exit` after installing hawq.)
* modify Apache HAWQ configuration
```
sed 's|localhost|centos7-namenode|g' -i /data/hawq-dev/etc/hawq-site.xml
echo 'centos7-datanode1' > /data/hawq-dev/etc/slaves
echo 'centos7-datanode2' >> /data/hawq-dev/etc/slaves
echo 'centos7-datanode3' >> /data/hawq-dev/etc/slaves
```
* Initialize Apache HAWQ cluster
```
sudo -u hdfs hdfs dfs -chown gpadmin /
source /data/hawq-dev/greenplum_path.sh
hawq init cluster
```
Now you can connect to database with `psql` command.
```
[gpadmin@centos7-namenode data]$ psql -d postgres
psql (8.2.15)
Type "help" for help.
postgres=#
```
# More command with this script
```
Usage:
To setup a build and test environment: make run
To start all containers: make start
To stop all containers: make stop
To remove hdfs containers: make clean
To remove all containers: make distclean
To build images locally: make build
To pull latest images: make pull
```