JDKstorm1.0.0
官方要求 JDK1.7
及以上,本次实验使用 JDK1.8
java version "1.8.0_91"
zookeeper 版本
zookeeper-3.4.9.tar.gz
分配机子职能
由于机子数量不足,一台机子可能有多个职能。
zookeeper
172.24.132.173
172.24.132.143
172.24.132.142
nimbus
172.24.132.174
supbervisor
172.24.132.143
172.24.132.142
主机名与 IP 的映射
编辑各个机子的 /etc/hosts
文件,将主机名称与 IP
的对应关系加上,例如:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.24.132.142 CLTQ-132-142
配置 jdk
- 用文本编辑器打开/etc/profile
在profile文件末尾加入:
export JAVA_HOME=/usr/local/lifecycle/jdk1.8.0_91 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
使修改生效
注意点:
- 你要将
/usr/local/lifecycle/jdk1.8.0_91
改为本机jdk
安装目录 - linux下用冒号
:
来分隔路径 - CLASSPATH中当前目录
.
不能丢,把当前目录丢掉也是常见的错误。 - export是把这三个变量导出为全局变量。
- 大小写必须严格区分。
安装 zookeeper 集群
zookeeper-3.4.9.tar.gz
解压到:/usr/local/
sudo tar -C /usr/local -xzf zookeeper-3.4.9.tar.gz
配置 zookeeper 的环境变量(可选)
配置 zookeeper
的环境变量,这一步是可选的,配置之后能够全局使用 zookeeper
相关的命令,没有配置则需要到 zookeeper
的安装目录下执行命令
添加如下配置到 /etc/profile
文件的最后,并通过命令 source /etc/profile
命令使修改后的配置生效
#ZOOKEEPER
ZOOKEEPER=/usr/local/zookeeper-3.4.9
PATH=$PATH:$ZOOKEEPER/bin
修改 zookeeper 的配置文件
首先将 /usr/local/zookeeper-3.4.6/conf/zoo_sample.cfg
文件复制一份,并更名为 zoo.cfg
。如果不需要配置集群,则不修改修改 zoo.cfg
文件。要配置集群,则需要将 zookeeper
集群信息通过 server
配置。
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper-3.4.6/data
dataLogDir=/usr/local/zookeeper-3.4.6/log
clientPort=2181
server.1=172.24.132.173:2888:3888
server.2=172.24.132.143:2888:3888
server.3=172.24.132.142:2888:3888
server.A=B:C:D
:其中 A
是一个数字,表示这个是第几号服务器;B
是这个服务器的 ip
地址;C
表示的是这个服务器与集群中的 Leader
服务器交换信息的端口;D
表示的是万一集群中的 Leader
服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader
,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B
都是一样,所以不同的 zookeeper
实例通信端口号不能一样,所以要给它们分配不同的端口号。
根据 dataDir
和 dataLogDir
变量创建相应的目录,建议优先创建,因为有可能使用的 linux
账户权限不足,zookeeper
无法自动创建这几个目录。
创建 myid 文件
在配置文件 zoo.cfg
中 dataDir
所指路径 /usr/local/zookeeper-3.4.6/data
下,新建 myid
文件,并写入 zoo.cfg
文件的 server.A
中 A
的数值,在不同机器上的该文件中填写相应的值。本次部署中,172.24.132.142 的 myid
文件应该写入数值 3
;172.24.132.143 的 myid
文件应该写入数值 2
;172.24.132.173 的 myid
文件应该写入数值 1
启动 zookeeper
执行命令 zkServer.sh start
将会启动 zookeeper
。而执行命令 zkServer.sh stop
将会停止 zookeeper
。
通过 jps
命令,可以看到 zookeeper
的进程名:QuorumPeerMain
。以及执行命令 zkServer.sh status
查看 zookeeper
集群状态,如下所示:
#172.24.132.142
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
#172.24.132.143
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
#172.24.132.173
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
storm 集群部署
apache-storm-1.0.0.tar.gz
解压到: /usr/local/
:
sudo tar -C /usr/local -xzf apache-storm-1.1.0.tar.gz
修改配置
添加如下几个主要参数就可以
storm.zookeeper.servers:
- "172.24.132.142"
- "172.24.132.143"
- "172.24.132.173"
storm.zookeeper.port: 2181
storm.local.dir: "/usr/local/apache-storm-1.0.0/data"
nimbus.seeds: ["172.24.132.174"]
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
storm.zookeeper.servers
:zookeeper
集群的IP
storm.zookeeper.port
:zookeeper
集群的端口,如果不是默认端口2181
则需要设置nimbus.seeds
:可以作为nimbus
的机子
拷贝配置完成的软件
将配置修改完成的软件拷贝到其他机子上:
scp -r apache-storm-1.0.0 172.24.132.142:/usr/local/
启动 nimbus 和 supervisor
nimbus
与 supervisor
可以部署在同一台机子,但是建议分开,避免相互影响。
172.24.132.174 后台运行 nimbus
bin/storm nimbus >/dev/null 2>&1 &
172.24.132.142 172.24.132.143后台运行 supervisor
bin/storm supervisor >/dev/null 2>&1 &
172.24.132.174 后台运行 storm ui
storm ui
得要在 nimbus
机子上运行,不能够在 supervisor
机子上运行
bin/storm ui >/dev/null 2>&1 &