简介:strom能实现高频数据和大规模数据的实时处理
Strom和hadoop的区别:
H:大规模的离线批处理;S:实时数据处理
H:MapReduce;S:Spout Bolt
Strom和spark
streaming的区别:
小批处理,近似实时处理
Strom架构:类似于Hadoop的架构
Nimbus:主节点,负责task(任务)的纸牌和分发、资源的分配
Supervisor:从节点,可以启动多个Worker(可通过配置来指定),
一个Topo可以运行多个在Worker智商,也可以通过配置来指定集群的从节点,负责执行任务的具体部分
启动和停止自己管理的Worker进程
Worker:运行具体组件逻辑的进程
------------------------------分割线-------------------------------------------
Task:Spout和Bolt,worker中每一个Spout和Bolt的线程成为一个Task
ISpout:
概述:
核心interface,负责将数据发送到topology处理
Strom会跟踪Spout发出去的tuple的DAG,如果strom发现每一个tuple都在DAG中被处理了,会发送一个ack的消息给Spout,如果失败可以配置timeout,strom会发送一个fail小时给Spout
Tuple:message id
ack/fail/nexttuple是在同一个现场中执行,所以不用考虑线程安全方面
核心方法:
open(Map conf, TopologyContextcon,SpoutOutputCollector col):初始化操作
close():资源释放操作
nextTuple():发送数据
fail(msgId): tuple处理失败,storm会反馈给spout一个消息,处理失败
实现类:BaseRichSpout(主要用的就是这个)、DRPCSpout、ShellSpout
IBolt:
概述:
职责:接受tuple处理,并进行相应的处理(filter/join/..)
hold住tuple在处理
IBolt会在一个运行的机器上创建,使用java序列化它,然后提交到主节点(nimbus)
回启动worker来序列化,调用prepare方法,然后才开始处理tuple
方法:
prepare:初始化
execute:处理一个tuple数据,tuple对象中包含了元数据信息
cleanup:shutdown之前的资源清理操作
实现类:BaseRichBolt
网友评论