Storm学习笔记(一)

1 Storm介绍

Storm是开源的分布式实时大数据处理框架,用于信息流处理和持续性计算。

技术延迟性开发难度本质
Storm毫秒级较难流计算,逐行或逐批次计算。按行数处理。
Spark Streaming数十秒或分钟简单按短小时间片段的批处理,比如2s一个时间片。按时间片处理。

Jstorm是阿里基于storm在网络io、线程模型、资源调度、可用性及稳定性上做了持续改进的版本。将storm用java重写。

Jstorm和Storm的区别:http://luoshi0801.iteye.com/blog/2168848

2 Storm集群架构

主节点排行作业
StormNimbusSupervisortopologies(拓扑),死循环
MapreduceJobtrackerTasktrackerMapReduce Job,执行完自动结束

Niubus - > Zookeeper - > Supervisor

Storm cluster

Nimbus 和 Supervisors 之间所有的协调工作通过 Zookeeper 集群协调,Nimbus 进程和 Supervisors 进程是无法直接连接和无状态的,所有状态维持在Zookeeper中或保存在本地磁盘上。

kill -9 Nimbus/Supervisor 杀死进程,不需要备份。

3 Strom工作原理

Nimbus 负责在集群topo的jar的上传并分发到每个Supervisor,topo只能提交在Nimbus上提交,将任务分配给其他机器。

Supervisor 监听分配给它的 Zookeeper 节点,根据 Nimbus 的委派在必要时启动和关闭工作进程(拉起worker进程,分配给worker资源,并委派任务)。每个工作进程执行 topology 的一个子集。一个运行中的 topology 由多个不同机器的工作进程(worker)组成。

Storm 是对流的处理,流是一个不间断的无界的连续 tuple ,流中的事件就是tuple,即元组。

A Storm topology

每个 stream 都有一个获取消息源的组件,即Spout。Spout 可以是可靠的也可以是不可靠的。可靠的消息源可以重新发射一个处理失败的 tuple ,一个不可靠的消息源 Spout 不会。

处理 stream 内的 tuple ,抽象为 Bolt ,bolt可以消费任意数量的输入流,只要将流方向导向该bolt,同时可以发送新的流给其他bolt。由spout得到数据,交给bolt处理,形成的有向无环图就是 topology 。

spout 和 bolt 被称为组件,发送 tuple 的方式称为广播方式。

Tasks in a topology

tuple 是一个值列表 value list,list 中的每列 value 都有一个 name,并且该 value 可以是任意可序列化的类型。拓扑的每个节点都要说明它发射出的元组的字段 name,其他节点需要订阅name接受处理。

UI、Nimbus(主节点)、Supervisor(各服务器子节点)、worker(服务器拉起的一个工作进程)、Executor、task(一个任务线程)是物理概念,Spout、Bolt、Topology 是任务相关的虚拟概念。

Spout 类方法 open 进行初始化,nextTuple 不断发射 tuple 到 topology,storm 在检测到一个 tuple 被整个 topology 成功处理的时候调用 ack,否则调用 fail。Storm 只对可靠的 Spout 调用 ack 和 fail。

Bolt 进行消息的处理:过滤、聚合、查询数据库等,主要方式是 execute (死循环)连续处理传入的 tuple ,成功处理完每一个 tuple 后回调 OutputCollector 的 ack 方法,通知 Storm 该 tuple 处理完成。处理失败时,回调 fail 方法通知 Spout 端可以重新发送该 tuple。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值