刚开始接触Storm,总体来说是一个订阅发布的功能,中间件
主要由3部分组成,spout bolt topology
1.spout 消息源
有两种实现方式,继承BaseRichSpout类和实现IRichSpout接口
主要用来接收消息,并发射给bolt
有以下几个方法:
1.1 open:初始化参数
1.2 nextTuple :重要方法!!消息接收,发射数据等
1.3 declareOutputFields:简单模式下无卵用,分段模式下据说挺重要,尚未实践,声明输出字段的方法
1.4 ack 传入一个object,主要是id,用来表示唯一的tuple,实现消息保障机制
2.bolt 处理单元
有两种实现方式,继承BaseBasicBolt类和实现IRichBolt接口
主要用来对消息进行处理后再发射
有以下几个方法:
2.1execute:(重要方法+1!!!!)接收一个tuple并执行逻辑处理,发射出去
2.2 declareOutputFields:字段声明
先说linux下storm安装,同样和zookeeper一样,先用sftp put进压缩包apache-storm-0.9.5.tar.gz,然后tar -zxvf 解压,
解压后就有这些文件
对了,按tab键可以补全输入哈
vi apache-storm-0.9.5/conf/storm.yaml
里面基本上都是#注释掉的,加上以下代码
storm.zookeeper.servers:
- "ip"
# - "server2"
#
nimbus.host: "ip"
storm.local.dir: "/usr/program/apache-storm-0.9.5/workdir"
ui.port: 8080
supervisor.slots.ports:
- 6700
- 6701
ip用自己的代替,还要去创建自己文件夹,storm.local.dir,自己配置路径
安装依赖库
(1)安装zeromq
到第四步可能会出错
1、出现错误:configure: error: Unable to find a working C++ compiler
需要安装g++编译器:
sudo
yum
install
gcc-c++
sudo表示在root下运行,如果已经是root用户可以省掉
2、出现错误:configure: error: cannot link with -luuid, install uuid-dev.
需要安装软件包uuid-devel和libuuid-devel:
sudo
yum
install uuid-devel
sudo
yum
install libuuid-devel
然后继续第四步
(2)安装jzmq
1.sudo yum install git
2.git clone https://github.com/nathanmarz/jzmq.git ps:有些教程是git不是https,git也可以,由于公司网络限制,所以我是用https的
3.cd jzmq/
4../autogen.sh
5../configure
6.make
7.make install
同样会出现错误:
出现错误:autogen.sh: error: could not find libtool. libtool is required to run autogen.sh.
需要安装libtool:
sudo
yum
install libtool
搞定之后继续就好,不要慌哈哈
对了,以上的路径我是随便找一个文件夹放的,不是storm的目录,不要搞混了
然后cd apache-storm-0.9.5/bin/
开启nimbus
./storm nimbus &
&代表后台运行
开启supervisor
./storm supervisor &
开启ui
./storm ui &
然后可在浏览器输入http://nimbus.host:ui.port查看 ui状态
提交任务
./storm jar 包名 main所在类路径 任务名
./storm jar stormtest1 storm1.SimpleTopology st
对了,用jps查看命令,先会变成config_value,然后才会变成nimbus、supervisor、ui,具体原因我不太清楚,估计是在编译lib下jar包,总之就是要等一会,等它编译完就可以访问了~~~
./storm kill st
杀死进程
同样作为菜鸟,推荐两个教程网址,真是帮了我大忙啊哈哈
1.http://shiyanjun.cn/archives/241.html
2.http://www.myexception.cn/database/2045639.html
^^