storm集羣搭建

集羣環境:每臺機器的操做系統,配置都要同樣的,避免一些沒必要要的麻煩,html

所需工具軟件:python,zookeeper,jzmq,storm,sshjava

1:集羣環境準備:python

1.1 設置主機名    linux

(1)執行命令hostname hadoop0 該操做只對當前會話有效(2)編輯文件vi /etc/sysconfig/network 修改成hadoop0驗證:重啓linux,查看是否生效git

1.2把ip和hostname綁定    github

編輯文件vi /etc/hosts  增長一行記錄 192.168.80.100 hadoop0驗證:ping hadoop0web

1.3 關閉防火牆    執行命令service iptables stop    驗證:service iptables statusapache

1.4關閉防禦牆的自動運行    執行命令chkconfig iptables off    驗證:chkconfig --list | grep iptables
vim

1.5 集羣中每一個節點時間同步服務器

第一步:安裝ssh,確保集羣中各個節點均可以通訊

1.6關閉selinux 

查看selinux狀態:

/usr/sbin/sestatus -v   #若是selinux status參數爲enabled即爲開啓狀態

1.7關閉selinux服務器,

note:修改配置文件須要重啓:

修改/etc/selinux/config文件:

將SELINUX=enforcing改爲SELINUX=disabled

重啓機器便可,

1.7:配置每一個節點的ssh
在hadoop2和hadoop3上分別執行[object Object]
驗證ssh的結果:

把hadoop1上的authorized_keys文件複製到hadoop2和hadoop3上,
執行scp authorized_keys hadoop2:/root/.ssh/
scp authorized_keys hadoop3:/root/.ssh/
ssh各個節點主機安裝完畢,
在線安裝mvn和ant

Linux下一鍵安裝maven

wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

yum -y install apache-maven


安裝ant

yum -y install ant



下載python wget http://www.python.org/ftp/python/

安裝:
xz -d Python-2.7.6.tar.xz

tar xvf Python-2.7.6.tar
cd Python-2.7.6
./configure
make
make install

注意:

安裝python以前,最好確認一下gcc是否安裝。yum install -y gcc

不然./configure 階段就會報錯了

查看python version看看是否安裝成功

安裝zookeeper

6 搭建zk的集羣

6.1 zk的集羣要求至少3個節點(分別是hadoop0、hadoop一、hadoop2),且是奇數個,且節點之間的時間要同步。

6.2 在hadoop0上對zookeeper.tar.gz進行復制,解壓縮、重命名、設置環境變量。

    (1)複製zookeeper-3.4.5.tar.gz到/usr/local目錄,而後進入到該目錄

    (2)執行命令 tar -zxvf  zookeeper-3.4.5.tar.gz 進行解壓縮(要進入到此文件目錄下執行)

    (3)重命名 mv zookeeper-3.4.5  zookeeper,而後vi /etc/profile文件,

配置環境變量


6.3 在hadoop0上進入zookeeper的conf目錄

    mv   zoo_sample.cfg   zoo.cfg

5.4 在hadoop0上進入/usr/local/zookeeper/conf目錄下,進行編輯文件zoo.cfg,

    修改dataDir=/tmp/zookeeper 改爲 dataDir=/usr/local/zookeeper/data

    新增如下三行

        server.0=hadoop0:2888:3888

 server.1=hadoop1:2888:3888

 server.2=hadoop2:2888:3888

5.5 在hadoop0上建立文件夾,執行命令mkdir -p /usr/local/zookeeper/data

5.6 在hadoop0的data目錄下,建立文件myid,文件內容是0

5.7 把hadoop0上的zookeeper文件夾和/etc/profile複製到hadoop一、hadoop2節點。

執行命令:

  重新解壓

5.8 在hadoop1上執行source /etc/profile,修改myid的值爲1

    在hadoop2上執行source /etc/profile,修改myid的值爲2

5.9 ******************三個節點分別執行命令zkServer.sh start*******************

查看每一個節點上的zookeeper狀態:zkServer.sh status

5.10 驗證:在各個節點分別執行jps,發現多一個java進程是QuorumPeerMain

5.11把zookeeper服務停用,zkServer.sh stop

好了,zookeeper集羣配置好了

安裝storm

解壓apache-storm-0.9.4.tar.gz

tar -xvf apache-storm-0.9.4.tar.gz

創建軟鏈接

ln -s apache-storm-0.9.4 storm

修改storm的配置文件storm.yaml文件

vim /usr/local/storm/conf/storm.yaml

vim /usr/local/storm/conf/storm.yaml :

storm.zookeeper.servers:
- "hostA"
- "hostB"
- "hostC"
storm.zookeeper.port: 2181
nimbus.host: "hostA"
storm.local.dir: "/tmp/storm"
storm.local.mode.zmq: true
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
說明:
storm.local.dir表示storm須要用到的本地目錄。
nimbus.host表示那一臺機器是master機器,即nimbus。
storm.zookeeper.servers表示哪幾臺機器是zookeeper服務器。
storm.zookeeper.port表示zookeeper的端口號,這裏必定要與zookeeper配置的端口號一致,不然會出現通訊錯誤,切記切記。固然你也能夠配superevisor.slot.port,supervisor.slots.ports表示supervisor節點的槽數,就是最多能跑幾個worker進程(每一個sprout或bolt默認只啓動一個worker,可是能夠經過conf修改爲多個)。
好了,storm集羣就配置好了。
如今準備啓動strom集羣:
在主節點hostA上啓動:
# bin/storm nimbus
# bin/storm supervisor
# bin/storm ui
在從節點上hostB hostC啓動:
# bin/storm supervisor
而後就能夠在http://{NimbusHost}:8080界面上看到storm ui的運行狀況了。
如提交運行任務:
storm jar sendCloud-dataAnalysis.jar com.sohu.sendCloud.controller.SimpleTopology analysis_v1
至此,整個strom集羣搭建完成。

其中要注意幾點就是 storm的配置文件storm.yaml格式要很是仔細,嚴格按照官方教程配置:https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster
如 參數前面有空格,ip地址使用雙引號之類的,配置不規範就會運行異常。
另外,若是使用的幾臺機器是有別名的,必定要在每一臺機器上都作好全部機器的host,否則就會出現以下錯誤:

2012-11-15 10:54:38 ClientCnxn [INFO] Session establishment complete on server zw_125_228/*.*.*.228:2181, sessionid = 0x33afe9d0d4b0caf, negotiated timeout = 20000
2012-11-15 10:54:38 worker [ERROR] Error on initialization of server mk-worker
org.zeromq.ZMQException: Invalid argument(0x16)
at org.zeromq.ZMQ$Socket.connect(Native Method)
at zilch.mq$connect.invoke(mq.clj:74)
at backtype.storm.messaging.zmq.ZMQContext.connect(zmq.clj:61)
at backtype.storm.daemon.worker$mk_refresh_connections$this__4269$iter__4276__4280$fn__4281.invoke(worker.clj:243)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.RT.seq(RT.java:473)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core$dorun.invoke(core.clj:2725)
at clojure.core$doall.invoke(core.clj:2741)
at backtype.storm.daemon.worker$mk_refresh_connections$this__4269.invoke(worker.clj:237)
at backtype.storm.daemon.worker$fn__4324$exec_fn__1207__auto____4325.invoke(worker.clj:350)
at clojure.lang.AFn.applyToHelper(AFn.java:185)
at clojure.lang.AFn.applyTo(AFn.java:151)
at clojure.core$apply.invoke(core.clj:601)
at backtype.storm.daemon.worker$fn__4324$mk_worker__4380.doInvoke(worker.clj:322)
at clojure.lang.RestFn.invoke(RestFn.java:512)
at backtype.storm.daemon.worker$_main.invoke(worker.clj:432)
at clojure.lang.AFn.applyToHelper(AFn.java:172)
at clojure.lang.AFn.applyTo(AFn.java:151)
at backtype.storm.daemon.worker.main(Unknown Source)
2012-11-15 10:54:38 util [INFO] Halting process: ("Error on initialization")

並且這樣的錯誤提示很不明顯。

修改vim /etc/hosts 將每一臺機器的別名都配置到hosts文件上,便可。

下面看一下運行的ui展現:

<a href="http://www.superwu.cn/wp-content/uploads/2014/11/clip_image002.jpg" class="cboxElement" rel="example4" 1329"="" style="text-decoration: none; color: rgb(1, 150, 227);">clip_image002

storm啓動命令:

 storm ui >/dev/null 2>&1 &

主節點啓動:

storm nimbus >/dev/null 2>&1 &

從節點啓動:

 storm supervisor >/dev/null 2>&1 &

jps查看進程

[root@hadoop1 local]# jps

12273 QuorumPeerMain

15431 nimbus

15514 supervisor

15581 core

19732 Jps

[root@hadoop1 local]# 

[root@hadoop2 local]# jps

6554 Jps

2779 supervisor

13518 QuorumPeerMain

[root@hadoop2 local]# 

[root@hadoop3 ~]# jps

7165 Jps

11551 QuorumPeerMain

3442 supervisor

[root@hadoop3 ~]# 

至此,storm集羣搭建成功。

查看web界面:http://192.168.6.177:8080/index.html

相關文章
相關標籤/搜索