この記事は、公式Twitterの嵐Wikiに基づいており、迅速にStormクラスタを構築する方法を詳細に説明し、実際には、プロジェクトは、 "ノート "の形で対応するセクションで、与えられた問題と教訓に遭遇しました。
I. ストームクラスターのコンポーネント
ストームクラスターには、マスターノードとワーカーノードの2種類のノードがあります。それぞれの役割は以下の通りです:
1.マスターノードは、Nimbusと呼ばれるバックグラウンドプログラムを実行します。Nimbusは、Stormクラスタ内でコードを配布し、作業マシンにタスクを割り当て、クラスタの状態を監視する役割を担います。Nimbusの役割は、HadoopにおけるJobTrackerの役割に似ています。
2.各 Worker ノードは Supervisor と呼ばれるバックグラウンド プロセスを実行します。Supervisor は Nimbus から割り当てられたタスクをリッスンし、それに応じてタスクを実行する Worker プロセスを起動または停止します。各 Worker プロセスは Topology のサブセットを実行します。実行中の Topology は、異なる Worker ノードに分散した複数の Worker プロセスで構成されます。
ストームクラスターコンポーネント
NimbusとSupervisorノード間のすべての調整は、Zookeeperクラスタを通じて行われます。さらに、NimbusとSupervisorの両方のプロセスは高速にフェイルします。Stormクラスタのすべての状態はZookeeperクラスタにあるか、ローカルディスクに保存されています。これは、NimbusとSupervisorのプロセスをkill -9で終了させることができ、再起動後も動作し続けることができることを意味します。この設計により、Stormクラスタは非常に安定しています。
II.ストームクラスターの設置
このセクションでは、Stormクラスタを構築する方法について詳しく説明します。以下は、順番に完了する必要がある次のインストール手順です:
1.Zookeeperクラスタを構築します;
2.Stormの依存関係をインストールします;
3.Stormディストリビューションをダウンロードし、解凍します;
4.storm.yaml構成ファイルを修正します;
5.ストームのバックグラウンドプロセスを開始します。
#p#
Zookeeper クラスタの構築
Stormはクラスタの調整にZookeeperを使用し、Zookeeperはメッセージングに使用されないため、StormがZookeeperに与える負荷はかなり低くなります。ほとんどの場合、シングルノードのZookeeperクラスタで十分ですが、障害回復を確実にするため、または大規模なStormクラスタを展開するために、より大きなノードのZookeeperクラスタが必要になる場合があります。Zookeeper クラスタ内の各マシンに、以下のインストールおよび導入手順を実行します:
2.Zookeeperクラスタの負荷に応じて、Javaのヒープサイズを合理的に設定します。控えめに言って、4GBのRAMを持つマシンは、Zookeeperのために最大3GBのヒープ領域を割り当てることができます。
4.Zookeeperクラスタノードに応じて、confディレクトリにZookeeper設定ファイルzoo.cfgを作成します:
tickTime=2000 
dataDir=/var/zookeeper/ 
clientPort=2181 
initLimit=5 
syncLimit=2 
server.1=zoo1:2888:3888 
server.2=zoo2:2888:3888 
server.3=zoo3:2888:3888 
ここで、dataDir は Zookeeper のデータファイルディレクトリを指定します。server.id=host:port:port、id は各 Zookeeper ノードの番号で、dataDir ディレクトリの下の myid ファイルに保存されます。は各 Zookeeper ノードのホスト名、1 番目のポートはリーダーへの接続に使用するポート、2 番目のポートはリーダー選出に使用するポートです。
5.dataDirディレクトリに、ノードの対応するserver.idのid番号を1行含むmyidファイルを作成します。
6.Zookeeperサービスを起動します:
java -cp zookeeper.jar:lib/log4j-1.2.15.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain zoo.cfg 
または
bin/zkServer.sh start 
7.サービスが Zookeeper クライアントから利用可能であることをテストします:
java -cp zookeeper.jar:src/java/lib/log4j-1.2.15.jar:conf:src/java/lib/jline-0.9.94.jar \ org.apache.zookeeper.ZooKeeperMain -server .1:2181 
または
bin/zkCli.sh -server .1:2181 
注意事項
Stormの依存関係のインストール
次に、以下のようにNimbusとSupervisorのマシンにStorm依存ライブラリをインストールする必要があります:
1. ZeroMQ 2.1.7 - バージョン2.1.10は、Stormクラスタを実行する際に奇妙な問題を引き起こす深刻なバグがあるため、使用しないでください。少数のユーザーが2.1.7で "IllegalArgumentException "例外に遭遇しましたが、2.1.4にダウングレードすることで修正されました。
2. JZMQ
3. Java 6
4. Python 2.6.6
5. 解凍
上記の依存ライブラリのバージョンはStormによってテストされていますが、Stormは他のバージョンのJavaまたはPythonライブラリで動作することを保証しません。
ZMQ 2.1.7のインストール
ZMQをダウンロードし、コンパイルしてインストールします:
wget http://..org/zeromq-....gz 
tar -xzf zeromq-2.1.7.tar.gz 
cd zeromq-2.1.7 
./configure 
make 
sudo make install 
注意事項
インストール・プロセスでuuidが見つからないと報告された場合は、以下のパッケージでuuidライブラリをインストールしてください:
sudo yum install e2fsprogsl  -b current 
sudo yum install e2fsprogs-devel  -b current 
#p#
JZMQのインストール
JZMQをダウンロードし、コンパイルしてインストールします:
git clone https://.com/nathanmarz/.git 
cd jzmq 
./autogen.sh 
./configure 
make 
sudo make install 
JZMQを正しく動作させるためには、以下の設定が必要な場合があります:
- JAVA_HOME環境変数の正しい設定
- Java開発パッケージをインストールします。
- autoconfのアップグレード
注意事項
Java 6のインストール
2.JAVA_HOME環境変数を設定します;
3.java、javacコマンドを実行し、javaの正常なインストールをテストします。
Python 2.6.6 のインストール
1.Python2.6.6をダウンロードします:
wget http://..org/ftp/python/..6/Python-....bz2 
2.Python2.6.6をコンパイルしてインストールします:
tar –jxvf Python-2.6.6.tar.bz2 
cd Python-2.6.6 
./configure 
make 
make install 
3.Python2.6.6のテスト:
python -V 
Python 2.6.6 
unzipのインストール
1.RedHatシリーズのLinuxシステムを使用している場合は、以下のコマンドを実行してunzipをインストールします:
apt-get install unzip 
2.DebianファミリーのLinuxシステムを使用している場合は、以下のコマンドを実行してunzipをインストールします:
yum install unzip 
Stormディストリビューションをダウンロードして解凍してください。
次のステップでは、NimbusおよびSupervisorマシンにStormディストリビューションをインストールします。
1.Stormディストリビューションをダウンロードします:
wget https://.com/downloads/nathanmarz/storm/storm-...zip 
2.インストールディレクトリに解凍します:
unzip storm-0.8.1.zip 
storm.yaml設定ファイルの修正
conf/storm.yamlファイルは、Stormディストリビューションの解凍されたディレクトリにあり、Stormの設定に使用されます。デフォルトの設定は、ここで確認できます。conf/storm.yamlの設定オプションは、defaults.yamlのデフォルトの設定を上書きします。conf/storm.yamlで設定する必要がある設定オプションは次のとおりです:
storm.zookeeper.servers: 
- "111.222.333.444  
- "555.666.777.888  
Zookeeperクラスタがデフォルト以外のポートを使用している場合は、storm.zookeeper.portオプションも必要です。
2) storm.local.dir: Nimbus と Supervisor プロセスが jar や confs などの少量の状態を保存するために使用するローカルディスクのディレクトリです。次に、storm.yaml でこのディレクトリを次のように設定します:
storm.local.dir: "/home/admin/storm/workdir" 
3) java.library.path: 嵐はローカルライブラリのロードパスを使用します。デフォルトは "/usr/local/lib:/opt/local/lib:/usr/lib" で、一般的にZMQとJZMQはデフォルトで/usr/local/libにインストールされるので、設定する必要はありません。local/libにインストールされるので、設定する必要はありません。
4) nimbus.host: StormクラスタのNimbusマシンのアドレス。各Supervisorワーカーノードは、Topologiesのjarやconfなどのファイルをダウンロードするために、どのマシンがNimbusであるかを知る必要があります:
nimbus.host: "111.222.333.444" 
5) supervisor.slots.ports: Supervisor ワーカーノードごとに、そのワーカーノードで実行できるワーカーの数を設定する必要があります。各ワーカーはメッセージ受信用に個別のポートを占有し、この設定オプションはワーカーが使用できるポートを定義します。デフォルトでは、例えばポート 6700, 6701, 6702, 6703 で、各ノードで4つのワーカーが実行できます:
supervisor.slots.ports。
- 0760
- 0761
- 0762
- 0763
#p#
ストームのバックグラウンドプロセスの開始
最後のステップとして、Storm のすべてのバックグラウンドプロセスを起動します。Zookeeperと同様に、Stormはフェイルファストシステムであるため、Stormはいつでも停止することができ、プロセスが再起動されたときに適切に実行を再開します。このため、Stormはプロセス内の状態を保存しません。NimbusやSupervisorsが再起動しても、実行中のTopologiesは影響を受けません。
ここでは、ストームの各バックグラウンドプロセスの開始方法を説明します:
Nimbus: Stormマスターノードで "bin/storm nimbus >/dev/null 2>&1 &"を実行して、Nimbusデーモンを起動し、バックグラウンドに置きます;
UI: Storm マスターノードで "bin/storm ui >/dev/null 2>&1 &" を実行して UI バックグラウンドアプリケーションを起動し、バックグラウンドで実行します。起動後、http://{ host}:8080 からクラスタのワーカーリソースの使用状況やその他の情報を観測できます。起動後、{ host}:8080 を使ってクラスタのワーカーリソース、Topologies の実行状況、その他の情報を観測することができます。
注意事項
Stormのバックグラウンドプロセスを開始するには、conf/storm.yaml設定ファイルで設定されたstorm.local.dirディレクトリへの書き込みパーミッションが必要です。
Stormのバックグラウンドプロセスが開始されると、各プロセスのログファイルがStormのインストールとデプロイメントディレクトリのlogs/サブディレクトリに生成されます。
Storm UIはStorm Nimbusと同じマシンにデプロイする必要があり、そうしないとUIプロセスがローカルマシンのNimbusリンクの存在をチェックするため、UIが正しく動作しないことがテストされています。
使いやすくするために、bin/stormをシステム環境変数に追加することができます。
この時点で、Stormクラスタはデプロイされ、構成され、クラスタトポロジーの実行にサブミットできます。
クラスタへのタスク投入
1.ストームトポロジーを開始します:
storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3 
2.ストームトポロジーの廃止
storm kill {toponame} 
toponame}は、トポロジーをストーム・クラスターにコミットするときに指定されたトポロジー・タスク名です。
1.
2.





