- Docker Docs
- Docker Compose getting started
- Docker Compose file reference
- Apache HBase Reference Guide
- ZooKeeper Documentation
- Go Documentation
- Pro Git
Nginx is a web server that delivers static content in our architecture.
Static content comprises the landing page (index.html), JavaScript, css and font files located in nginx/www
.
We use HBase, the open source implementation of Bigtable, as database.
hbase/hbase_init.txt
creates the se2
namespace and a library
table with two column families: document
and metadata
.
- HBase REST documentation
- The client port for REST is 8080
- Use Curl to explore the API
curl -vi -X PUT -H "Content-Type: application/json" -d '<json row description>' "localhost:8080/se2:library/fakerow"
The HBase image above already contains a ZooKeeper instance.
A reverse proxy that forwards every request to nginx, except those with a "library" prefix in the path (e.g., http://host/library
).
We discover running gserve instances with the help of the ZooKeeper service and forward library
requests in circular order among those instances (Round Robin).
Gserve serves two purposes.
Firstly, it receives POST
requests from the client (via grproxy) and adds or alters rows in HBase.
And secondly, it replies to GET
requests with an HTML page displaying the contents of the whole document library.
It only receives requests from grproxy after it subscribed to ZooKeeper, and automatically unsubscribes from ZooKeeper if it shuts down or crashes.
*NOTE*: In case HBase build is broken
Unfortunately, HBase does not maintain a stable URL to the latest version of the software and we have to periodically migrate to newer versions.
Try changing the variable HBASE_VERSION in hbase/Dockerfile to a more recent version. You can find a list of available versions here: http://apache.lauf-forum.at/hbase/stable/
To start use the command docker-compose up