пятница, 29 ноября 2013 г.

Инструкция по установке Twitter Storm

Storm:  distributed and fault-tolerant realtime computation
По горячим следам, пока это еще в голове. На первый взгляд всё просто, но поприсидать пришлось.

Последовательность такая:

1.  Ставим Zookeeper
2.  Ставим зависимости для Nimbus и рабочих машин
3.  Скачиваем и ставим Storm на Nimbus и рабочие машины
4.  Правим конфиг Шторма  storm.yaml
5.  Запускаем демонов

Настраиваем мастер (Nimbus):


  • Zookeeper
    Для тестового кластера хватит одной ноды. За одно поставим утилиты и библиотеки, необходимые для Nimbus

apt-get install openjdk-6-jdk zookeeper make build-essential
apt-get install uuid-dev unzip pkg-config libtool automake

  • apache
    Для UI нужен веб сервер
apt-get install apache2


Далее настройка Нимбуса и рабочих нод одинакова.
Ставим зависимости. Storm требует ZeroMQ 2.1.7 и JZMQ.
  •  ZerroMQ 2.1.7Нужна версия 2.1.7 ибо 2.1.10 глюкава

sudo aptitude install build-essential
cd ~
wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
tar zxvf zeromq-2.1.7.tar.gz
cd zeromq-2.1.7
./configure
make
sudo make install
sudo ldconfig


  • JZMQ
    С ним пришлось повозиться. Ниже приведен самый рабочий способ:

    Будет нужен GIT 
sudo apt-get install git
git clone --depth 1 https://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

./configure
touch src/classdist_noinst.stamp
cd src/

CLASSPATH=.:./.:$CLASSPATH javac -d . org/zeromq/ZMQ.java org/zeromq/App.java org/zeromq/ZMQForwarder.java org/zeromq/EmbeddedLibraryTools.java org/zeromq/ZMQQueue.java org/zeromq/ZMQStreamer.java org/zeromq/ZMQException.java

cd ..
make
sudo make install

  • Storm     
    Собственной персоны
wget https://github.com/downloads/nathanmarz/storm/storm-0.8.1.zip
unzip storm-0.8.1.zip
sudo mkdir /mnt/storm
sudo chmod 777 /mnt/storm

         правим conf/storm.yaml
storm.zookeeper.servers:
- "111.222.333.444"
- "555.666.777.888"

storm.local.dir: "/mnt/storm"

nimbus.host: "111.222.333.44"

supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703

Запускаем:
  • Nimbus на мастере "bin/storm nimbus"
  • Supervisor на каждой рабочей машине "bin/storm supervisor"
  • UI на мастере "bin/storm ui" http://{nimbus host}:8080