Storm和Zookeeper集群搭建及在java项目中的使用

实验环境


  1. Cent OS 6.9;
  2. apache-storm-1.1.0;
  3. 三台服务器虚拟机:192.168.1.129、192.168.1.214、192.168.1.241;

准备工作


1、修改服务器hostname和hosts文件使得可以直接通过hostname访问

使用hostname name修改hostname,例如:

hostname xuliugen129

(或者直接修改/etc/hostname文件,输入要设置的hostname)

将三台服务器分别修改为:xuliugen129、xuliugen214、xuliugen241。

2、然后,修改/etc/hosts使之在内网环境下可以ping 通:

每台机子都设置为上边的hostname,只需要添加上边的三行即可。

3、关闭3台服务器的防火墙:

service firewalld stop

关于Cent OS防火墙的使用可以参考:CentOS 7中firewall防火墙详解和配置以及切换为iptables防火墙

Zookeeper安装与配置


在上一篇中介绍了Zookeeper集群的安装方式,这里不再介绍,请查看:Kafka 单机和分布式环境搭建与案例使用

Storm安装与配置


1、选择合适的版本进行下载Storm

下载地址:http://storm.apache.org/downloads.html

这里选择的是apache-storm-1.1.0.tar.gz ,点击进去选择合适的镜像地址进行下载,我这里的下载地址为:http://mirrors.tuna.tsinghua.edu.cn/apache/storm/apache-storm-1.1.0/apache-storm-1.1.0.tar.gz

使用wget进行下载:

>wget http://mirrors.tuna.tsinghua.edu.cn/apache/storm

/apache-storm-1.1.0/apache-storm-1.1.0.tar.gz

分别下载到3台服务器上,然后解压到自己合适的位置,我这里都是:/home/xuliugen/server

2、配置Storm

配置文件在:/home/xuliugen/server/apache-storm-1.1.0/conf 目录下的storm.yaml

默认只需要修改如下部分:

3台服务器的Storm进行上述相同的配置即可。

Storm启动与应用


1、Storm命令

启动命令在:/home/xuliugen/server/apache-storm-1.1.0/bin 文件夹下,

以上列出了所有可以执行的命令模式。

2、启动nimbus

nimbus主机为:xuliugen129

另外开启一个控制界面,使用jps查看是否正常启动:

nimbus表示正常启动。

3、启动Storm UI

Storm UI这可以在启动nimbus的机器上运行,这里是:xuliugen129,启动如下:

启动之后,jps如下:

Storm UI 进程为core,访问xuliugen129:8080(这里我的PC级访问的话,就不再是上述设置的hostname,应该是对应的内网IP,默认端口为8080)

http://192.168.1.129:8080

3、启动另外两台supervisor

主机分别为:xuliugen214、xuliugen24

>./storm supervisor

查看Storm UI如下:

4、最后查看任一台Zookeeper服务器,查看节点情况:

项目代码使用


CSDN代码地址:http://download.csdn.net/download/u010870518/9949050
百度云盘地址: 链接:http://pan.baidu.com/s/1qYoJ6I4 密码:zsni

1、项目结构

核心jar为:storm-core-1.1.0.jar

2、执行原理:

一个Topology是Spouts和Bolts组成的图, 通过Stream Groupings将图中的Spouts和Bolts连接起来,如下图:

3、Spout代码

**4、UpperBolt代码

**5、AppendBolt代码

**6、TopologyMain代码

7、提交到Storm集群运行:

(1)将项目导出jar,步骤如下:

(2)如果有警告的话,直接忽略即可。
(2)将导出的jar上传到服务器上,nimbus主机即可,我这里上传到:/home/xuliugen/temp 目录下,

(4)在2台supervisor主机上创建项目中需要的目录:

/home/xuliugen/server/stormdata/

(5)提交到Storm集群的命令为:

>./storm jar /home/xuliugen/temp/stormdemo.jar com.xuliugen.demo.topology.TopologyMain

(1)/home/xuliugen/temp/stormdemo.jar为打包的jar在服务器上的位置;

(2)com.xuliugen.demo.topology.TopologyMain位主函数全路径;

(6)最后查看Storm UI可以看到:

(7)运行效果

12