centos7:storm集群搭建



一、安裝環境

二、配置主機

1、修改主機名

192.168.17.133主機名為nimbus

[root@localhost ~]# hostnamectl set-hostname nimbus
[root@localhost ~]# hostnamectl # 進行查看
   Static hostname: nimbus
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 9c87704ce3d94696bb0d7f42391344ce
           Boot ID: 33382d7142944f5c9138afec2111e77f
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-862.3.2.el7.x86_64
      Architecture: x86-64

配置其他兩台192.168.17.134,192.168.17.135主機名分別為supervisor1和supervisor2。

2、配置“/etc/hosts”文件,方便直接通過主機名訪問主機。

主機名為nimbus的/etc/hosts更新:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.17.133 localhost
192.168.17.133 nimbus
192.168.17.134 supervisor1  # 務必要添加,否則找不到
192.168.17.135 supervisor2  # 務必要添加,否則找不到

192.168.17.134、192.168.17.135也是同樣方式,重啟后,即可生效。


安裝zookeeper

     1、將zookeeper-3.4.12.tar.gz解壓到/data2/frame/目錄下(/data2/frame用於存儲所有流計算或者分布式相關組件),將zookeeper-3.4.12目錄名改為。

$ cd /data2/frame/
$ tar -zxf zookeeper-3.4.12.tar.gz
$ mv zookeeper-3.4.6 zookeeper
$ cd zookeeper

    2、分別創建data和logs目錄   

# 用於存儲zookeeper的數據文件
mkdir data
# 用於存儲日志
mkdir logs 

   3、創建配置文件zoo.cfg

    該文件是不存在的,需要到zookeeper的conf目錄下,拷貝zoo-sample.cfg,並將名稱修改為zoo.cfg。

$ cp conf/zoo-sample.cfg conf/zoo.cfg
$ vim conf/zoo.cfg  

    4、配置zookeeper

# The number of milliseconds of each tick
# 表示Zookeeper服務器心跳時間,單位毫秒
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
#
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
#dataDir=/tmp/zookeeper


# 用於存儲zookeeper的數據文件
dataDir=/data2/frame/zookeeper/data
# 用於存儲zookeeper的日志文件
dataLogDir=/data2/frame/zookeeper/logs
# 添加集群的服務器
server.0=nimbus:2888:3888
server.1=supervisor1:2888:3888
server.2=supervisor2:2888:3888


# the port at which the clients will connect 
# 連接端口,客戶端訪問zookeeper時經過服務器端時的端口號
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
autopurge.purgeInterval=1

配置說明:添加我們的服務器,其中等號前面的“0”,“1“,”2“表示的是id,必須唯一且是數字,保存在dataDir目錄下的myid文件中。等號右邊的nimbus、supervisor1、supervisor2是集群服務器名,2888是follower和集群中的leader交換消息所使用的端口。3888是選舉leader時所使用的端口。

5、在data文件夾中創建myid文件,里面內容是server.N中的N。

echo "0" > /data2/frame/zookeeper/data/myid  

6、復制配置好的zookeeper到其他兩台主機上

scp -r zookeeper/ root@supervisor1:/data2/frame/zookeeper  
scp -r zookeeper/ root@supervisor2:/data2/frame/zookeeper  
# 修改supervisor1主機
echo "1" > data/myid
# 修改supervisor2主機
echo "2" > myid

7、啟動ZooKeeper服務器

[root@localhost zookeeper]# bin/zkServer.sh start
# 執行此命令后,將收到以下響應表示成功
ZooKeeper JMX enabled by default
Using config: /data2/frame/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

8、啟動CLI

$ bin/zkCli.sh

    鍵入上述命令后,將連接到ZooKeeper服務器,應該得到以下響應。

Connecting to localhost:2181
................
................
................
Welcome to ZooKeeper!
................
................
WATCHER::
WatchedEvent state:SyncConnected type: None path:null
[zk: localhost:2181(CONNECTED) 0]quit #退出

9、查看zookeeper狀態

$ ./bin/zkServer.sh status

    狀態返回:

[root@nimbus zookeeper]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data2/frame/zookeeper/bin/../conf/zoo.cfg
Mode: leader
[root@supervisor1 zookeeper]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data2/frame/zookeeper/bin/../conf/zoo.cfg
Mode: follower
status 顯示是 “ Mode: standalone " , 也就是單機模式 ;“Mode:leader“和“Mode : follower”,表示集群模式。

10、停止ZooKeeper服務器

     連接服務器並執行所有操作后,可以使用以下命令停止zookeeper服務器。

$ bin/zkServer.sh stop

    ZooKeeper服務器的響應:

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper3.4.10/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPE

11、總結:

  • myid必須唯一且是數字。
  • 在部署集群時,現檢查集群主機上的環境。      

三、安裝storm

1、解壓安裝包apache-storm-1.2.2.tar.gz到“/data2/frame"文件夾下

$ cd /data2/frame/
$ tar -zxvf  apache-storm-1.2.2.tar.gz
$ mv apache-storm-1.2.2 storm

2、添加環境變量

[root@nimbus storm]# vim /etc/profile

添加:

export STORM_HOME=/data1/frame/storm
export PATH=$PATH:$STORM_HOME/bin

profile生效:

[root@nimbus storm]# source /etc/profile

3、Nimbus節點storm.yaml配置

########### These MUST be filled in for a storm configuration
# storm.zookeeper.servers:
#     - "server1"
#     - "server2"
# 
# nimbus.seeds: ["host1", "host2", "host3"]

修改如下:

方法一:

# 使用主機名配置
storm.zookeeper.servers:
      - "nimbus"
      - "supervisor1"
      - "supervisor2"
  
nimbus.seeds: ["nimbus"]

把該行開頭的#去掉,把- “serverx”修改成你自己主機名,注意-的前后要有空格

方法二:

# 使用ip地址配置
storm.zookeeper.servers:
      - "192.168.17.133"
      - "192.168.17.134"
      - "192.168.17.135"
  
nimbus.seeds: ["192.168.17.133"]

一般都是采用方法一。

配置解釋:

      (1)storm.zookeeper.servers表示配置Zookeeper集群地址。注意,如果zookeeper集群中使用的不是默認端口,則還需要配置storm.zookeeper.port.

      (2)nimbus.seeds表示配置主控節點,可以配置多個。

其他參數的配置:

#配置數據存儲路徑
storm.local.dir: "/data2/frame/storm/data"

##配置節點健康檢測
storm.health.check.dir: "healthchecks"
storm.health.check.timeout.ms: 5000
storm.local.hostname: "192.168.17.133"

#配置Storm UI
ui.port: 8080

4、Supervisor節點storm.yaml配置

將nimbus下的storm傳輸到supervisor節點指定目錄下:

scp -r storm/ supervisor1:/data2/frame/
scp -r storm/ supervisor2:/data2/frame/  

Supervisor安裝的時候,只需要指定Nimbus地址,就可以自動加入Storm集群

########### These MUST be filled in for a storm configuration
storm.zookeeper.servers:
     - "192.168.17.133"
     - "192.168.17.134"
     - "192.168.17.135"

nimbus.seeds: ["192.168.17.133"]

#配置數據存儲路徑
storm.local.dir: "/data2/frame/storm/data"

##配置節點健康檢測
storm.health.check.dir: "healthchecks"
storm.health.check.timeout.ms: 5000

storm.local.hostname: "192.168.17.134"

#配置supervisor: 開啟幾個端口插槽,就開啟幾個對應的worker進程
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

5、啟動storm

(1)啟動主控節點服務

./storm nimbus >/dev/null 2>&1 &
./storm ui >/dev/null 2>&1 &
./storm logviewer >/dev/null 2>&1 &

(2)啟動工作節點

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

6、驗證是否啟動完成


如果storm UI無法打開,查看是否關閉防火牆。(centos7下關閉防火牆

7、存在問題

(1)Storm UI 中顯示的Supervisor 的個數與實際的不符

刪除Supervisor中的 storm.local.dir 目錄的數據,之前拷貝到各個節點的時候,把這個目錄頁拷貝過去了。如果 storm.local.dir的目錄為空的話,每個Supervisor就會創建自己的ID。

 Storm ui展示主機名

(2)每台storm這里hostname配置自己的ip地址

storm.local.hostname: "192.168.2.150"
(3)日志鏈接鏈接失敗

         需啟動LogView服務

./storm logviewer >/dev/null 2>&1 &


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com