SharEDITor

教你成为全栈工程师(Full Stack Developer) 二十六-storm安装与初识

全栈技术 教你成为全栈工程师(Full Stack Developer) 发表于 2016-05-11 17:21:24 阅读2184次


storm是如今用来做实时数据处理的首选,它的高效以及基于分布式系统的考虑备受技术团队青睐,尤其是实时日志处理,以及基于日志的实时分析,从本章节开始我们来认识一下这个强大的开源工具,并通过这个工具来做一个非常有意思的事情,敬请期待

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

安装zookeeper

 

zookeeper是storm运行强依赖

注意:

1)用supervision启动zookeeper,保证不能退出

2)用cron定期清理zookeeper的日志数据,不然磁盘会很快占满(以后再研究)

 

安装步骤:

wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
tar zxvf zookeeper-3.4.8.tar.gz
cd zookeeper-3.4.8/
cp conf/zoo_sample.cfg conf/zoo.cfg

修改conf/zoo.cfg,把

dataDir=/tmp/zookeeper

改成

dataDir=/var/zookeeper

创建/var/zookeeper/myid,内容为数字1

执行

./bin/zkServer.sh start

成功启动

验证方法:

./bin/zkCli.sh

输入help命令查看帮助

 

为了让zookeeper异常退出后能自动重启,需要安装deamontools

wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar zxvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76/

vim src/error.h 找到:extern int errno; 改成:#include <errno.h>

执行

package/install

这时已经安装好了

[root@centos7vm daemontools-0.76]# which supervise
/usr/local/bin/supervise

创建/data/service/zookeeper/run文件,内容为:

#!/bin/bash
exec 2>&1
exec /data/zookeeper-3.4.8/bin/zkServer.sh start

增加执行权限

chmod +x /data/service/zookeeper/run

杀了之前手工启动的zookeeper,然后执行

cd /data/service/zookeeper
nohup supervise /data/service/zookeeper &

这时zookeeper被supervice启动了,尝试杀一次zookeeper后还会自动起来

请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址

参考:http://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html

 

 

安装storm

 

wget http://apache.fayea.com/storm/apache-storm-1.0.1/apache-storm-1.0.1.tar.gz
tar apache-storm-1.0.1.tar.gz
cd apache-storm-1.0.1

修改conf/storm.yaml,添加如下配置

storm.zookeeper.servers:
    - "127.0.0.1"
nimbus.seeds: ["127.0.0.1"]
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

 

启动storm,执行

 

./bin/storm nimbus &
./bin/storm supervisor &
./bin/storm ui &

 

打开web界面,http://127.0.0.1:8080

界面如下:

 

安装完成

 

讲讲storm

 

storm系统由一个nimbus节点和多个supervisor节点组成,上面因为是部署单机版本,所以只启动了一个supervisor。他们之间是通过zookeeper协调运行的,所以必须依赖zookeeper。nimbus负责分配任务和监控任务,本身不做计算,supervisor负责真正的计算任务。

storm上运行的任务和map-reduce的不同在于它运行的是一种topology任务,也就是一种有向无环图形式的任务服务。

上面配置文件中配置的supervisor.slots.ports包含了4个port,也就是这个supervisor可以监听4个端口同时并发的执行4个任务,因此在web界面里我们看到Free slots是4

在map-reduce系统上运行的任务我们叫做mapper和reducer,相对之下,在storm上运行的任务叫做spout(涛涛不绝地喷口)和bolt(螺栓),在拓扑里传递的消息叫做tuple。spout其实就是信息产生的源头,而bolt就是处理逻辑

 

下一节我们来试验一些简单的用途,来发觉storm可以用来做些什么事情