一、安裝準備:
JDK、ssh、python。安裝都比較簡單,我之前做別的時候已經安裝,此處不再詳述。
ssh的安裝和服務啓動可以參見我的另一個講hadoop安裝的文章。而且我的storm集羣和hadoop相同,都是配置在三臺虛擬機上的,用戶組及用戶名和hadoop那個一樣,都要求用戶名是hadoop
二、安裝zookeeper集羣(三臺虛擬機)
前:創建三個文件夾:
#zookeeper安放路徑
mkdir -p /opt/modules
#zookeeper日誌存放路徑
mkdir -p /var/log/zookeeper
#zookeeper數據存放路徑
mkdir -p /tmp/zookeeper
1.下載zookeeper源碼
官網下載zookeeper
mv zookeeper-3.4.8.tar.gz /opt/modules
tar zxvf zookeeper-3.4.8.tar.gz
ln -s zookeeper-3.4.8 zookeeper
2.配置zookeeper屬性文件
進入zookeeper根目錄,之後
cd conf
cp zoo_sample.cfg zoo.cfg
之後vim打開zoo.cfg,把下面內容追加到裏面:
tickTime=2000
clientPort=2181
initLimit=5
syncLimit=2
server.1=ip1:2888:3888
server.2=ip2:2888:3888
server.3=ip3:2888:3888
!!!!!!ip1,ip2,ip3用你的ip地址替換。
server.A=B:C:D,A是一個數字。B是ip地址,C首選端口,D是防止對方掛掉的預防端口。
如果只是一臺是虛擬機,那就要分配不同的端口了。
zoo.cfg裏datadir的默認值是/tmp/zookeeper,我們要在這個目錄下創建myid文件。三個虛擬機裏這個文件只有一行,分別是上面對應的A值
#創建myid文件
vim /tmp/zookeeper/myid
#添加對應數字
1
3、配置日誌打印文件
把輸出日誌放到指定文件夾下,便於日誌回收和查看。下面在zookeeper根目錄下進行:
打開bin/zkEnv.sh ,把下面代碼添加到腳本主體(新手注意,不要放在有!/的第一行)的開頭部分:
ZOO_LOG_DIR=/var/log/zookeeper
4.修改三個主要的文件夾的用戶:
sudo chown -R hadoop:hadoop /opt/modules/zookeeper*
sudo chown -R hadoop:hadoop /var/log/zookeeper
sudo chown -R hadoop:hadoop /tmp/zookeeper
5.啓動zookeeper集羣
三臺虛擬機進入zookeeper的根目錄,執行下面命令:
bin/zkServer.sh start
再執行:
bin/zkCli.sh -server 127.0.0.1:2181
如果安裝成功會有[zk:127.0.0.1:2181(CONNETED) 1]的字樣(忘記截圖),可以輸入help,ls /等命令。
!!!!!datadir下的日誌和快照不會自動清理,需要通過其他方式定期清理。
三、storm安裝:
1.安裝storm依賴庫
ZeroMQ
JZMQ
1.1安裝zeromq:
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
安裝出錯:
(1).安裝過程中會出現cannot link with -luuid, install uuid-dev c++錯誤,執行如下命令:
sudo apt-get install g++ build-essential gawk zlib1g-dev uuid-dev
(2).configure: error: Unable to find a working C++ compilersudo apt-get install g++
1.2安裝jzmq:
sudo apt-get install libtool autoconf
git clone https://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
sudo make install
安裝出錯:
(1)安裝 JZMQ出錯 (1).make[1]: *
沒有規則可以創建“org/zeromq/ZMQ.class”需要的目標“classdist_noinst.stamp”。 停止
#修正方法,創建classdist_noinst.stamp文件
touch src/classdist_noinst.stamp
(2)make[1]: *** 沒有規則可以創建“all”需要的目標“org/zeromq/ZMQ$Context.class”。 停止。make[1]:正在離開目錄 `/home/hadoop/Storm/jzmq/src'
make: *** [all-recursive] 錯誤 1
cd src/
javac -d . org/zeromq/*.java
#手動編譯
2.安裝storm集羣:
下載storm:點擊打開鏈接
配置storm.yaml文件,以下都是在storm根目錄下。
打開conf/storm.yaml文件
#1.去掉下面代碼的#並修改
storm.zookeeper.servers:
- "ip1"
- "ip2"
- "ip3"
#如果zookeeper沒有用默認端口,還要改的storm.zookeeper.port
#2.storm.local.dir用於存少量nimbus,supervisor進程的少量狀態
storm.local.dir: "/var/storm"
#3.nimbus.host,storm集羣nimbus的機器地址,各個supervisor需要知道哪個是nimbus
nimbus.host: "ip1"
上面只是少量的屬性配置,其他的屬性都在defaults.yaml文件裏。
3.啓動storm集羣
mkdir /var/storm
sudo chown -R hadoop:hadoop /var/storm
sudo chown -R hadoop:hadoop 你的storm地址
nimbus:在主控節點上運行,即ip1。在ip1虛擬機上,啓動ip1並放在後臺執行:
bin/storm nimbus </dev/null 2<&1 &
supervise:在Storm工作節點上運行,在ip2,ip3上啓動並放在後臺執行:
bin/storm supervisor </dev/null 2<&1 &
UI:必須在ip1上,因爲它會去找nimbus連接
bin/storm ui </dev/null 2<&1 &
之後在瀏覽器打開http://ip1:8080,會出現下面界面:
4.停止storm
集羣storm停止需要一個一個的殺死進程。