Strom组件的介绍

  1. Storm的整体架构


- Numbus:为主节点,主要负责任务的提交,集群任务的分配,以及集群的监控
- Zookeeper集群:存放心跳信息,集群状态,配置信息,接收来自Numbus要分发给Supervisor的任务
- Supervisor:负责从Zookeeper领取Numbus分发的任务,启动和停止自己管理的worker进程
- Worker:负责运行处理业务逻辑的Executor
- Task:worker中每一个 Spout /bolt的线程称为一个task. 在 Storm 0.8之后,task不再与物理线程对应,同一个 Spout /bolt的task可能会共享一个物理线程,该线程称为executor
2. Storm基本组件
以wordcount为例,介绍相关组件:

  • Topology: Storm 中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构 ,有序五环图,在这里我把整个wordcount设计为WordCountTopology

  • Spout:在一个topology中负责从数据源读取数据,产生源数据流的组件。通常情况下 Spout 会从外部数据源中读取数据,然后转换为topology内部的源数据。 Spout 是一个主动的角色,其接口中有个nextTuple()函数, Storm 框架会不停地调用此函数,用户只要在其中生成源数据即可。这里我们将会创建SentenceSpout,负责读取源数据,然后封装成tuple,传递给SplitBolt处理。

  • Tuple:一次消息传递的基本单元。

  • Bolt:接收来自Spout发送过来的tuple,然后执行处理的组件。Bolt可以执行过滤、函数操作、合并、写数据库等任何操作。Bolt是一个被动的角色,其接口中有个execute(Tuple input)函数,在接受到消息后会调用此函数,用户可以在其中执行自己想要的操作。

  • Stream Grouping:即消息的partition方法。流分组策略告诉topology如何在两个组件之间发送tuple。 Storm 中提供若干种实用的grouping方式,总共有七种方式:

    • ShuffleGrouping(随机分组)
    • FieldsGrouping(按照字段分组,在这里即是同一个单词只能发送给一个Bolt)
    • AllGrouping(广播发送,即每一个Tuple,每一个Bolt都会收到)
    • GlobalGrouping(全局分组,将Tuple分配到task id值最低的task里面)
    • NoneGrouping(随机分派)
    • DirectGrouping(直接分组,指定Tuple与Bolt的对应发送关系)
    • LocalOrShuffleGrouping
    • CustomGrouping (自定义的Grouping)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值