本文配置方法参考自CentOS下Storm 1.0.0集群安装详解
从官方网站ZooKeeper Releases下载所需版本并解压
编辑/etc/profile设置zookeeper的环境变量
#set zookeeper environment
export ZOOKEEPER_HOME=/home/b216/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
用zookeeper目录下的conf中的zoo_sample.cfg制作zoo.cfg
mkdir /tmp/zookeeper
mkdir /var/log/zookeeper
使用/zkServer.sh start运行不报错,则zookeeper的单机安装已经完成了
集群模式建议至少有3个节点,节点个数最好是奇数,每个节点要有相同的个配置文件
打开配置文件zoo.cfg,修改为:
tickTime=2000
dataDir=/opt/zookeeper-3.4.8/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
server后面跟的数字就是该节点的标号,我们需要将这个编号写入名为
myid
的文件。该文件应该存放在前面配置的dataDir指向的目录下。
例如上面的slave1节点,对应的data/myid
文件中应该写入2
将zookeeper拷贝到各节点上
scp -r /home/b216/zookeeper root@slave1:/opt
scp -r /home/b216/zookeeper root@slave2:/opt
拷贝完成后,记得修改对应服务器的
myid
文件
配置完成后需要到每个节点上启动Zookeeper服务,每个节点启动后可以用zkServer.sh status
查看当前节点的启动状态以及是leader节点还是follower节点。
从官网Get The Software下载压缩包并解压,进入解压后目录
./configure
make
make install
sudo ldconfig (更新LD_LIBRARY_PATH)
zeromq安装完成。
注意:如有有依赖报错,需要安装:
sudo yum install uuid*
sudo yum install libtool
sudo yum install libuuid
sudo yum install libuuid-deve
yum install git
git clone git://github.com/nathanmarz/jzmq.git
cd jzmq
./autogen.sh
./configure
make
make install
然后,jzmq就装好了.
注意:在./autogen.sh这步如果报错:autogen.sh:error:could not find libtool isrequired to run autogen.sh,这是因为缺少了libtool,可以用#yum installlibtool*来解决。
从官网Storm downloads下载1.0.2版本的压缩文件并解压
向/etc/profile添加关于storm的环境设置
#set storm environment
export STORM_HOME=/home/b216/storm
export PATH=$PATH:$STORM_HOME/bin
至此,storm单机版本安装完毕
打开核心配置文件:storm.yaml
cd /home/b216/storm/conf
vi storm.yaml
至少完成以下3处的配置,笔者的配置文件:
storm.zookeeper.servers:
- "master"
- "slave1"
- "slave2"
storm.local.dir: "/home/b216/storm/data"
nimbus.seeds: ["master"]
## Locations of the drpc servers
drpc.servers:
- "server1"
- "server2"
其中storm.zookeeper.servers
,表示Zookeeper集群地址。如果Zookeeper集群使用的不是默认端口,那么还需要配置storm.zookeeper.port。storm.local.dir
用于配置Storm存储少量文件的路径。nimbus.seeds
用于配置主控节点的地址,可以配置多个。
注:当在本地运行时可以配置为localhost运行。
scp -r storm root@slave1:/opt
scp -r storm root@slave2:/opt
Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node)。其分别对应的角色如下:
主控节点(Master Node)上运行一个被称为Nimbus的后台程序,它负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态。
每个工作节点(Work Node)上运行一个被称为Supervisor的后台程序。Supervisor负责监听从Nimbus分配给它执行的任务,据此启动或停止执行任务的工作进程。每一个工作进程执行一个Topology的子集;一个运行中的Topology由分布在不同工作节点上的多个工作进程组成。
storm nimbus
storm supervisor
在主控节点上运行
storm ui
说明:需要分别到每个节点启动服务。管理界面将运行在启动它的服务器的8080端口,日志文件在程序目录中logs文件夹下。上面的启动方式是在前台运行的,如果需要在后台运行,可以使用类似nohup storm nimbus &
的方式运行。
注意:只有提交分布式模式的拓扑到集群才会在Topology summary显示对应的拓扑信息。
在DRPC服务器上运行
storm drpc
当遇到supervisor启动一段时间后自动exit时,需要关闭集群,并且检查配置的storm.local.dir目录是否存在,是否有写入权限,全都正常的话清空再重启集群就好了。
进入目录storm/examples/storm-start,运行如下命令启动wordcount
storm jar storm-starter-topologies-1.0.2.jar org.apache.storm.starter.WordCountTopology
进一步的使用maven打包代码运行参考 使用Maven编译运行Storm入门代码(Storm starter)