こんにちは! JQです。
前回は『OSS編~Jubatusを試してみる②~』と題して、1台のインスタンス上でJubatusの分散処理を試してみました。
今回は『OSS編~Jubatusを試してみる③~』と題して、複数台のインスタンス上でJubatusの分散処理を試してみたいと思います。
以下の構成で試してみます。
※JubatusとZookeeperのインストールは前回の記事をご参照ください。
管理サーバ:1台
ノード:3台
1.Zookeeperの設定
先ずは複数台でZookeeperを起動するための設定をそれぞれのノードに追加します。
1 2 3 4 |
$ vim /home/ubuntu/zookeeper-3.4.6/conf/zoo.cfg server.1=10.147.242.78:2888:3888 server.2=10.185.202.150:2888:3888 server.3=10.147.154.209:2888:3888 |
続いてdataDirで指定しているディレクトリにmyidファイルを作成します。
myidファイルにはserver.n=xxx.xxx.xxxのnの数字を記述します。
1 2 3 |
$ echo 1 > /tmp/zookeeper/myid $ echo 2 > /tmp/zookeeper/myid $ echo 3 > /tmp/zookeeper/myid |
2.Zookeeperの起動
それぞれのノードで起動します。
1 2 3 4 |
$ /home/ubuntu/zookeeper-3.4.6/bin/zkServer.sh start JMX enabled by default Using config: /home/ubuntu/zookeeper-3.4.6/bin/../conf/zoo.cfg Starting zookeeper ... STARTED |
3.Jubatus Proxyの起動
それぞれのノードでJubatus Proxyを起動します。
1 2 3 |
$ jubaclassifier_proxy --zookeeper 10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 & $ jubaclassifier_proxy --zookeeper 10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 & $ jubaclassifier_proxy --zookeeper 10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 & |
4.プロセスの起動
それぞれのノードでプロセスを起動しておきます。
1 2 3 |
$ jubaclassifier --rpc-port=9200 --name=shogun --zookeeper=10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 & $ jubaclassifier --rpc-port=9200 --name=shogun --zookeeper=10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 & $ jubaclassifier --rpc-port=9200 --name=shogun --zookeeper=10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 & |
5. jubavisor
jubavisorを利用して各プロセスをjubactlから管理出来るようにします。
それぞれのノードで実施します。
1 2 3 |
$ jubavisor --zookeeper 10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 --daemon $ jubavisor --zookeeper 10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 --daemon $ jubavisor --zookeeper 10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 --daemon |
6. jubactl
管理サーバからjubactlでスタートしてみます。
1 2 3 4 |
$ jubactl -c start --server=jubaclassifier --type=classifier --name=shogun --zookeeper 10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 sending start / jubaclassifier/shogun to 10.147.154.209_9198...ok. sending start / jubaclassifier/shogun to 10.147.242.78_9198...ok. sending start / jubaclassifier/shogun to 10.185.202.150_9198...ok. |
ステータスを確認してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ jubactl -c status --server=jubaclassifier --type=classifier --name=shogun --zookeeper 10.147.242.78:2181,10.185.202.150:2181,10.147.154.209:2181 active jubaproxy members: 10.147.154.209_9199 10.147.242.78_9199 10.185.202.150_9199 active jubavisor members: 10.147.154.209_9198 10.147.242.78_9198 10.185.202.150_9198 active shogun members: 10.147.154.209_9200 10.147.242.78_9200 10.185.202.150_9200 |
7.実行
それぞれのノードで実行してみます。
1 |
$ python shogun.py |
下記のようにmix が行われているのが分かります。
1 |
I0520 07:33:42.621950 2152 linear_mixer.cpp:621] put_diff with 5375 bytes finished my model is still up to date. versions [13th, 13th] |
いかがでしたでしょうか?
次回もお楽しみに!!!