From e163b8fb17c495f600a5607f83acb1f40ade9bf5 Mon Sep 17 00:00:00 2001 From: Elisey Zanko Date: Sat, 8 Oct 2016 23:03:00 +0500 Subject: [PATCH] Changes after review --- storm/content.md | 20 ++++++++++---------- storm/docker-compose.yml | 19 ++++++++++++++----- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/storm/content.md b/storm/content.md index 0cf78693c..cdfa1079c 100644 --- a/storm/content.md +++ b/storm/content.md @@ -10,27 +10,27 @@ Apache Storm is a distributed computation framework written predominantly in the ## Running topologies in local mode -Assuming you have `storm-starter-topologies-1.0.1.jar` in the current directory. +Assuming you have `storm-starter-topologies-1.0.2.jar` in the current directory. - $ docker run -it -v $(pwd)/storm-starter-topologies-1.0.1.jar:/topology.jar 31z4/storm:1.0.1 storm jar /topology.jar org.apache.storm.starter.ExclamationTopology + $ docker run -it -v $(pwd)/storm-starter-topologies-1.0.2.jar:/topology.jar storm:1.0.2 storm jar /topology.jar org.apache.storm.starter.ExclamationTopology ## Setting up a minimal Storm cluster 1. [Apache Zookeeper](https://zookeeper.apache.org/) is a must for running a Storm cluster. Start it first. Since the Zookeeper "fails fast" it's better to always restart it. - $ docker run -d --restart always --name zookeeper 31z4/zookeeper:3.4.8 + $ docker run -d --restart always --name some-zookeeper zookeeper:3.4 2. The Nimbus daemon has to be connected with the Zookeeper. It's also a "fail fast" system. - $ docker run -d --restart always --name nimbus --net container:zookeeper 31z4/storm:1.0.1 storm nimbus + $ docker run -d --restart always --name some-nimbus --link some-zookeeper:zookeeper storm:1.0.2 storm nimbus 3. Finally start a single Supervisor node. It will talk to the Nimbus and Zookeeper. - $ docker run -d --restart always --name supervisor --net container:nimbus --net container:zookeeper 31z4/storm:1.0.1 storm supervisor + $ docker run -d --restart always --name supervisor --link some-zookeeper:zookeeper --link some-nimbus:nimbus storm:1.0.2 storm supervisor 4. Now we can submit a topology to our cluster. - $ docker run -it --net container:nimbus -v $(pwd)/storm-starter-topologies-1.0.1.jar:/topology.jar 31z4/storm:1.0.1 storm jar /topology.jar org.apache.storm.starter.WordCountTopology topology + $ docker run --link some-nimbus:nimbus -it --rm -v $(pwd)/storm-starter-topologies-1.0.2.jar:/topology.jar storm:1.0.2 storm jar /topology.jar org.apache.storm.starter.WordCountTopology topology ## %%COMPOSE%% @@ -38,20 +38,20 @@ Run `docker-compose up` and wait for it to initialize completely. The Nimbus wil ## Configuration -This image uses [default configuration](https://github.com/apache/storm/blob/v1.0.1/conf/defaults.yaml) of the Apache Storm. There are two main ways to change it. +This image uses [default configuration](https://github.com/apache/storm/blob/v1.0.2/conf/defaults.yaml) of the Apache Storm. There are two main ways to change it. 1. Using command line arguments. - $ docker run -d --restart always --name nimbus 31z4/storm:1.0.1 storm nimbus -c storm.log.dir="/logs" -c storm.zookeeper.servers="[\"zookeeper\"]" + $ docker run -d --restart always --name nimbus storm:1.0.2 storm nimbus -c storm.log.dir="/logs" -c storm.zookeeper.servers="[zookeeper]" 2. Assuming you have `storm.yaml` in the current directory you can mount it as a volume. - $ docker run -it -v $(pwd)/storm.yaml:/apache-storm-1.0.1/conf/storm.yaml 31z4/storm:1.0.1 storm nimbus + $ docker run -it -v $(pwd)/storm.yaml:/apache-storm-1.0.2/conf/storm.yaml storm:1.0.2 storm nimbus ## Data persistence No data are persisted by default. For convenience there are `/data` and `/logs` directories in the image owned by `storm` user. Use them accordingly to persist data and logs using volumes. - $ docker run -it -v /logs -v /data 31z4/storm:1.0.1 storm nimbus -c storm.log.dir="/logs" -c storm.local.dir="/data" + $ docker run -it -v /logs -v /data storm:1.0.2 storm nimbus -c storm.log.dir="/logs" -c storm.local.dir="/data" *Please be noticed that using paths other than those predefined is likely to cause permission denied errors. It's because for [security reasons](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#user) the Storm is running under the non-root `storm` user.* diff --git a/storm/docker-compose.yml b/storm/docker-compose.yml index 104849503..489b1cf68 100644 --- a/storm/docker-compose.yml +++ b/storm/docker-compose.yml @@ -1,21 +1,30 @@ version: '2' services: zookeeper: - image: 31z4/zookeeper:3.4.8 + image: zookeeper:3.4 + container_name: zookeeper restart: always nimbus: - image: 31z4/storm:1.0.1 - command: storm nimbus -c storm.zookeeper.servers="[\"zookeeper\"]" -c nimbus.host="nimbus" + image: storm:1.0.2 + container_name: nimbus + command: storm nimbus depends_on: - zookeeper + links: + - zookeeper restart: always ports: - 6627:6627 supervisor: - image: 31z4/storm:1.0.1 - command: storm supervisor -c storm.zookeeper.servers="[\"zookeeper\"]" -c nimbus.host="nimbus" + image: storm:1.0.2 + container_name: supervisor + command: storm supervisor depends_on: - nimbus + - zookeeper + links: + - nimbus + - zookeeper restart: always