storm是实现大数据的实时流计算的工具。
流式计算:使用流计算,数据实时产生,实时传输,实时计算,实时显示。
代表技术:
flume 实时获取数据。Kafka/metag实时数据存储,storm/J storm实时数据计算,redis实时结果缓存,mysql持久化存储。
storm搭建体系结构
storm主要由主节点:nimbus 和从节点supervisor 构成,需要架构在zookeeper上进行实现HA
imbus:负责资源的分配和任务调度;
supervisor:负责接受nimbus的任务,启动和停止自己的worker进程,通过配置当前supervisor,可以确定开几个worker
任务分两种:spout是采集数据,blot是处理数据任务
worker:运行具体处理组建逻辑的进程,任务有两种即上所述
executor:是worker进程中的一个物理线程,
- 同一个Spout/Bolt的Task可能会共享一个物理线程,一个Executor中只能运行隶属于同一个Spout/Bolt的Task。
task:每一个spout/blot任务的线程都是一个task,但不同的task会共享一个executor
启动zookeeper:zkServer.sh start 查看状态:zkServer.sh status
进入正题:
首先,下载,解压,配置环境变量
- 解压:tar -zxvf apache-storm-1.0.3.tar.gz -C ~/training/
2.设置环境变量
3。编辑配置文件
storm的配置文件在/root/training/apache-storm-1.0.3/conf/storm.yaml
修改效果为:
1。单点模式(在bigdata111上)
storm.zookeeper.servers:
- "192.168.52.111"
nimbus.seeds:["192.168.52.111"]
supervisor.slots.ports:
- 6700
- 6701
-6702
-6703
#共四个worker
#配置一个目录。用于nimbus保存任务的元信息和任务(需要事先创建好)
storm.local.dir: "/root/training/apache-storm-1.0.3/tmp"
2.全分布的模式(三台机器在bigdata112,113,114上 )
1,首先,需要三台机器全部配置好storm的环境变量
2.在112上配置文件
只需要改写
storm.zookeeper.servers:
- ''bigdata112''
- "bigdata113"
- "bigdata114"
nimbus.seeds:["bigdata112"]
#HA 时,nimbus.seeds:["bigdata112","bigdata113"]
然后,保存退出。
将112上的配置复制到113,114上去
scp -r apache-storm-1.0.3/ root@bigdata113:/root/training
scp -r apache-storm-1.0.3/ root@bigdata114:/root/training
启动nimbus:storm nimbus &
启动supervisor:storm supervisor &
打开网页版界面:storm ui &
3.运行demo
storm自带demo,在examples文件夹下
storm jar storm-starter-topologies-1.0.3.jar org.apache.storm.starter.WordCountTopology MyWC
然后就可以在UI上看到运行界面
4.若想启用debug
1、如何启用Debug?修改配置文件还是conf /storm.yaml
"topology.eventlogger.executors": 1
2、启动日志查看器:storm logviewer &
至此,结束