美文网首页
Strom自学

Strom自学

作者: MosOucHunibyu | 来源:发表于2019-01-28 13:19 被阅读0次

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

          本文链接:https://www.haomeiwen.com/subject/nkrajqtx.html