1、torm叢集中包含兩類節點:主控節點(Master Node)和工作節點(Work Node)。
其分別對應的角色如下:主控節點(Master Node)上執行一個被稱為Nimbus的後臺程式,它負責在Storm叢集內分發程式碼,分配任務給工作機器,並且負責監控叢集執行狀態。Nimbus的作用類似於Hadoop中JobTracker的角色。每個工作節點(Work Node)上執行一個被稱為Supervisor的後臺程式。Supervisor負責監聽從Nimbus分配給它執行的任務,據此啟動或停止執行任務的工作程序。每一個工作程序執行一個Topology的子集;
一個執行中的Topology由分佈在不同工作節點上的多個工作程序組成。Nimbus和Supervisor節點之間所有的協調工作是透過Zookeeper叢集來實現的。此外,Nimbus和Supervisor程序都是快速失敗(fail-fast)和無狀態(stateless)的;Storm叢集所有的狀態要麼在Zookeeper叢集中,要麼儲存在本地磁碟上。這意味著你可以用kill -9來殺死Nimbus和Supervisor程序,它們在重啟後可以繼續工作。這個設計使得Storm叢集擁有不可思議的穩定性。如何安裝部署Storm叢集這一章節將詳細描述如何搭建一個Storm叢集。
下面是接下來需要依次完成的安裝步驟:
•搭建Zookeeper叢集;
•安裝Storm依賴庫;
•下載並解壓Storm釋出版本;
•修改storm.yaml配置檔案;
•啟動Storm各個後臺程序。
2.1 搭建Zookeeper叢集Storm使用Zookeeper協調叢集,
由於Zookeeper並不用於訊息傳遞,所以Storm給Zookeeper帶來的壓力相當低。
大多數情況下,單個節點的Zookeeper叢集足夠勝任,不過為了確保故障恢復或者部署大規模Storm叢集,
可能需要更大規模節點的Zookeeper叢集(對於Zookeeper叢集的話,官方推薦的最小節點數為3個)。
在Zookeeper叢集的每臺機器上完成以下安裝部署步驟:
1)下載安裝Java JDK,官方下載連結為javasuncom/javase/downloads/indexjsp,JDK版本為JDK 6或以上。
2)根據Zookeeper叢集的負載情況,合理設定Java堆大小,儘可能避免發生swap,導致Zookeeper效能下降。保守期間,4GB記憶體的機器可以為Zookeeper分配3GB最大堆空間。
3)下載後解壓安裝Zookeeper包,官方下載連結為hadoopapacheorg/zookeeper/releaseshtml。
4)根據Zookeeper叢集節點情況,建立如下格式的Zookeeper配置檔案zoo.cfg:tickTime=2000dataDir=/var/zookeeper/clientPort=2181initLimit=5syncLimit=2server.1=zoo1:2888:3888server.2=zoo2:2888:3888server.3=zoo3:2888:3888其中,dataDir指定Zookeeper的資料檔案目錄;其中server.id=host:port:port,id是為每個Zookeeper節點的編號,儲存在dataDir目錄下的myid檔案中,zoo1~zoo3表示各個Zookeeper節點的hostname,第一個port是用於連線leader的埠,第二個port是用於leader選舉的埠。
5)在dataDir目錄下建立myid檔案,檔案中只包含一行,且內容為該節點對應的server.id中的id編號。
6)啟動Zookeeper服務:java -cp zookeeper.jar:lib/log4j-1.2.15.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain zoo.cfg也可以透過bin/zkServer.sh指令碼啟動Zookeeper服務。
7)透過Zookeeper客戶端測試服務是否可用:
•Java客戶端下,
執行如下命令: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 127.0.0.1:2181也可以透過bin/zkCli.sh指令碼啟動Zookeeper Java客戶端。
•C客戶端下,進入src/c目錄下,
編譯單執行緒或多執行緒客戶端:./configuremake cli_stmake cli_mt執行進入C客戶端:cli_st 127.0.0.1:2181cli_mt 127.0.0.1:2181至此,
完成了Zookeeper叢集的部署與啟動。
3、向叢集提交任務1)啟動Storm Topology:storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3其中,allmycode.jar是包含Topology實現程式碼的jar包,org.me.MyTopology的main方法是Topology的入口,arg1、arg2和arg3為org.me.MyTopology執行時需要傳入的引數。
2)停止Storm Topology:storm kill {toponame}其中,{toponame}為Topology提交到Storm叢集時指定的Topology任務名稱。
1、torm叢集中包含兩類節點:主控節點(Master Node)和工作節點(Work Node)。
其分別對應的角色如下:主控節點(Master Node)上執行一個被稱為Nimbus的後臺程式,它負責在Storm叢集內分發程式碼,分配任務給工作機器,並且負責監控叢集執行狀態。Nimbus的作用類似於Hadoop中JobTracker的角色。每個工作節點(Work Node)上執行一個被稱為Supervisor的後臺程式。Supervisor負責監聽從Nimbus分配給它執行的任務,據此啟動或停止執行任務的工作程序。每一個工作程序執行一個Topology的子集;
一個執行中的Topology由分佈在不同工作節點上的多個工作程序組成。Nimbus和Supervisor節點之間所有的協調工作是透過Zookeeper叢集來實現的。此外,Nimbus和Supervisor程序都是快速失敗(fail-fast)和無狀態(stateless)的;Storm叢集所有的狀態要麼在Zookeeper叢集中,要麼儲存在本地磁碟上。這意味著你可以用kill -9來殺死Nimbus和Supervisor程序,它們在重啟後可以繼續工作。這個設計使得Storm叢集擁有不可思議的穩定性。如何安裝部署Storm叢集這一章節將詳細描述如何搭建一個Storm叢集。
下面是接下來需要依次完成的安裝步驟:
•搭建Zookeeper叢集;
•安裝Storm依賴庫;
•下載並解壓Storm釋出版本;
•修改storm.yaml配置檔案;
•啟動Storm各個後臺程序。
2.1 搭建Zookeeper叢集Storm使用Zookeeper協調叢集,
由於Zookeeper並不用於訊息傳遞,所以Storm給Zookeeper帶來的壓力相當低。
大多數情況下,單個節點的Zookeeper叢集足夠勝任,不過為了確保故障恢復或者部署大規模Storm叢集,
可能需要更大規模節點的Zookeeper叢集(對於Zookeeper叢集的話,官方推薦的最小節點數為3個)。
在Zookeeper叢集的每臺機器上完成以下安裝部署步驟:
1)下載安裝Java JDK,官方下載連結為javasuncom/javase/downloads/indexjsp,JDK版本為JDK 6或以上。
2)根據Zookeeper叢集的負載情況,合理設定Java堆大小,儘可能避免發生swap,導致Zookeeper效能下降。保守期間,4GB記憶體的機器可以為Zookeeper分配3GB最大堆空間。
3)下載後解壓安裝Zookeeper包,官方下載連結為hadoopapacheorg/zookeeper/releaseshtml。
4)根據Zookeeper叢集節點情況,建立如下格式的Zookeeper配置檔案zoo.cfg:tickTime=2000dataDir=/var/zookeeper/clientPort=2181initLimit=5syncLimit=2server.1=zoo1:2888:3888server.2=zoo2:2888:3888server.3=zoo3:2888:3888其中,dataDir指定Zookeeper的資料檔案目錄;其中server.id=host:port:port,id是為每個Zookeeper節點的編號,儲存在dataDir目錄下的myid檔案中,zoo1~zoo3表示各個Zookeeper節點的hostname,第一個port是用於連線leader的埠,第二個port是用於leader選舉的埠。
5)在dataDir目錄下建立myid檔案,檔案中只包含一行,且內容為該節點對應的server.id中的id編號。
6)啟動Zookeeper服務:java -cp zookeeper.jar:lib/log4j-1.2.15.jar:conf \ org.apache.zookeeper.server.quorum.QuorumPeerMain zoo.cfg也可以透過bin/zkServer.sh指令碼啟動Zookeeper服務。
7)透過Zookeeper客戶端測試服務是否可用:
•Java客戶端下,
執行如下命令: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 127.0.0.1:2181也可以透過bin/zkCli.sh指令碼啟動Zookeeper Java客戶端。
•C客戶端下,進入src/c目錄下,
編譯單執行緒或多執行緒客戶端:./configuremake cli_stmake cli_mt執行進入C客戶端:cli_st 127.0.0.1:2181cli_mt 127.0.0.1:2181至此,
完成了Zookeeper叢集的部署與啟動。
3、向叢集提交任務1)啟動Storm Topology:storm jar allmycode.jar org.me.MyTopology arg1 arg2 arg3其中,allmycode.jar是包含Topology實現程式碼的jar包,org.me.MyTopology的main方法是Topology的入口,arg1、arg2和arg3為org.me.MyTopology執行時需要傳入的引數。
2)停止Storm Topology:storm kill {toponame}其中,{toponame}為Topology提交到Storm叢集時指定的Topology任務名稱。