storm hadoop
实时流处理 批处理
无状态 有状态
使用zk协同的主从架构 无主从zk架构
每秒处理数万消息 HDFS,MR 数分钟,数小时
不会主动停止 终于完成的时候
storm优点: 跨语言,可伸缩,低延迟,秒级 容错
核心概念:
Tuple 主要数据结构,有序元素的列表
stream tuple的序列
spouts 数据流源头,可以读取kafka列队消息,可以自定义
bolts 转接头 逻辑处理单元,spout的数据传递个bolt,bolt计算,完成后产生新的数据
Topology:spouts+bolts连接在一起形成一个top,形成有向图,定点是计算,边是数据流
Task:每个spouts和bolts都是一个task
storm架构:
Nimbus: master节点 核心组件,运行top,分析top并收集运行task,分发task给supervisor靠zk去关注top状态
supervisor: 每个supervisor 有n个worker进程,负责代理task给worker
worker最终是执行线程并运行task,storm 使用内部消息系统在nimbus和supervisor之间通信
worker:执行特定的task,worker本身不执行任务,而是产生executors 让executors执行task
executor:本质上是work产生的一个线程而已,executor 运行task都属于同一个spout或者bolt
task:执行实际上的任务处理,或者是spout或者是bolt
集群环境搭建 :
注意:以上配置,凡是有冒号的地方,冒号后都要有个空格。
storm/conf/storm.yaml
storm.zookeeper.servers:
- "计算机名或者IP"
- "计算机名或者IP"
nimbus.seeds : ["计算机名或者IP"]
storm.local.dir: "/home/centos/storm"
# 配置工作节点上的进程端口。你配置一个端口,意味着工作节点上启动一个worker
supervisor.slots.ports:
- 6700
- 6701
- 6702
- 6703
启动集群:
bin>./storm ui,
bin>./storm nimbus
bin >./supervisor
网友评论