Strom自学

简介: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

你可能感兴趣的:(Strom自学)