Storm 是一个开源的、大数据处理系统,与其他系统不同,它旨在用于分布式实时处理且与语言无关。
Storm 实现的一些特征决定了它的性能和可靠性的。Storm 使用 ZeroMQ 传送消息,这就消除了中间的排队过程,使得消息能够直接在任务自身之间流动。在消息的背后,是一种用于序列化和反序列化 Storm 的原语类型的自动化且高效的机制。Storm 的一个最有趣的地方是它注重容错和管理。Storm 实现了有保障的消息处理,所以每个元组都会通过该拓扑结构进行全面处理;如果发现一个元组还未处理,它会自动从喷嘴处重放。Storm 还实现了任务级的故障检测,在一个任务发生故障时,消息会自动重新分配以快速重新开始处理。Storm 包含比 Hadoop 更智能的处理管理,流程会由监管员来进行管理,以确保资源得到充分使用。
下面介绍一下storme的安装和部署,需要完成以下步骤:
1.依赖库的安装,包括Python、jdk;
2.zookeeper集群的安装;
3.下载并解压storm的安装包;
4.修改storm的配置文件storm.yaml;
5.启动storm集群各节点的进程。
第一步:检查依赖库是否已安装(Python、jdk)
检查Python是否安装:
[root@logsrv02 /]# python
Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
检查jdk是否安装:
[root@logsrv02 /]# java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
第二步:zookeeper集群的安装
详情可以参考:http://blog.csdn.net/u014039577/article/details/47746629
第三步:下载并解压storm的安装包
下载地址:http://storm.apache.org/downloads.html
下载后可以通过Winscp拷贝到linux的环境下,然后解压:
tar zxvf apache-storm-0.9.2-incubating.tar.gz
第四步:修改storm的配置文件storm.yaml
进入到storm的配置文件 /apache-storm-0.9.2-incubating/conf/:
storm.zookeeper.servers:
- "172.17.6.148"
- "172.17.6.142"
- "172.17.6.149"
nimbus.host: "172.17.6.142"
storm.local.dir: "/home/storm-data"
storm.zookeeper.port: 2181
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
ui.port: 8081
这里注意,配置的时候,每一个配置项的值前面需要空一个空格,不然启动storm的时候要报错。
下面解释各配置项的含义:
storm.zookeeper.servers: storm集群各节点的ip地址;
nimbus.host:整个storm集群主控节点的ip,这个ip用于访问集群的ui;
storm.local.dir:用于nimbus和supervisor进程存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限;
storm.zookeeper.port:zookeeper集群的监测的端口号,这个如果不配置,就会使用默认的端口号;
supervisor.slots.ports: 每个Supervisor工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的;
ui.port:访问ui的端口号。
第五步:启动storm各节点的后台进程
1.启动集群的主控节点:
cd /usr/local/apache-storm-0.9.2-incubating/
bin/storm nimbus
2.启动其他的工作节点:
bin/storm supervisor
3.在主控节点所在机子上启动ui进程:
bin/storm ui
整个集群都启动完毕后,打开浏览器监测集群是否部署成功:http://172.17.6.142:8081