Public | Automated Build

Last pushed: 4 months ago
Short Description
enables deploying an Apache Storm cluster on top of Docker Swarm.
Full Description

docker-storm

We created this image to ease deployment of Apache Storm. More related main.resources:

The Docker image launches Apache Storm. By default, the storm.local.hostname property is set already, but you have to provide all other arguments that you would normally provide.

No need for a storm.yaml!

Storm allows you to provide any property via command line arguments like this:

bin/storm ui \
    -c storm.local.hostname="nimbus"

You are not restricted to strings, but can also provide integer lists:

bin/storm supervisor \
    -c supervisor.slots.ports="[6700,6701]"

Or lists of strings:

bin/storm supervisor \
    -c storm.zookeeper.servers="[\"zk1\",\"zk2\",\"zk3\"]"

You can look up all the parameters in the source code.

Providing ZooKeeper the easy way

This image also lets you specify the ZooKeeper servers with a simple list (e.g. "zk1,zk2,zk3") instead of the more verbose format Storm requires (e.g. "[\"zk1\",\"zk2\",\"zk3\"]").
So if your ZooKeeper cluster is made up of zk1, zk2 and zk3, you can tell Storm to use this cluster by providing the following Docker environment variable:

-e STORM_ZOOKEEPER_SERVERS="zk1,zk2,zk3"

Internally, this is passed to Storm as

-c storm.zookeeper.servers="[\"zk1\",\"zk2\",\"zk3\"]"

Default Values

The baqend/storm Docker image uses the following default values that can be overridden by providing the corresponding arguments in the run statement (e.g. -c nimbus.seeds="[\"nimbus1\",\"nimbus2\"]"):

  • -c nimbus.seeds="[\"nimbus\"]": is also overridden by nimbus.host (depreciated since 1.0.0)
  • -c storm.local.hostname=<CONTAINER-ID>: by default, the image assigns the value nimbus when nimbus is provided as argument; the docker container ID is used as hostname else
  • -c supervisor.slots.ports="[6700,6701,6702,6703]": only when the supervisor argument is provided

In consequence, only the ZooKeeper servers and the role argument (either ui, nimbus or supervisor) have to be provided in a docker run statement.

Further Reading

For an example of how we use this image, also see our tutorial on how to use Storm with Docker Swarm.

Docker Pull Command
Owner
baqend
Source Repository

Comments (0)