一、安装环境
- 安装包:zookeeper-3.4.12.tar.gz 、apache-storm-1.2.2.tar.gz
- 集群主机IP:192.168.17.133 ,192.168.17.134 ,192.168.17.135
- 下载地址:zookeeper-3.4.12.tar.gz:http://zookeeper.apache.org/releases.html#download,apache-storm-1.2.2.tar.gz:http://storm.apache.org/downloads.html
- 集群主机名称:nimbus,supervisor1,supervisor2
二、配置主机
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”,表示集群模式。
故障:
[root@localhost zookeeper]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data0/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
出现无法启动问题,很有可能是防火墙的问题。zookeeper使用的端口分别2181,2888,3888,应该讲相应防火墙关系。
firewall-cmd --zone=public --add-port=1000-4000/tcp --permanent
firewall-cmd --reload
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、验证是否启动完成http://192.168.17.133:8080/
如果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 &