Storm

为hadoop提供流处理,运维简单,高度容错,支持多种语言的实时数据处理系统。

Storm集群主要由一个主节点和一群工作节点组成,通过Zookeeper集群协调。

集群架构:

  • Nimbus:主节点运行的一个后台程序,用于响应分布在集群中节点,分配任务和检测故障。

  • Supervisor:工作节点运行的一个后台程序,用于收听工作指派并基于要求工作进程。

大数据之Storm

Topology

大数据之Storm

在storm中,应用程序实现实时处理的逻辑被封装进Storm中的topology中,一个topplpgy是一组Spout组建和Bolt组件通过Stream Gruoping进行连接的图。

  • Spout:在一个topology中产生源数据流的组件,从来源处读取数据并放入topology。
  • Bolt:在一个topology中接受数据然后执行处理的组件。
  • Stream(流):Storm将输入的数据看成流,它是以tuple为单位组成的一条有向无界的数据流。
  • Stream Groupings:消息分组方法。有六种分组方法
  1. 随机分组(shuffle grouping):随机分发tuple到Bolt的任务,保证每个任务获得相等数量tuple。

大数据之Storm

     2.字段分组(Fields grouping):根据指定字段分割数据流,并分组。例如,根据“userid”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。

大数据之Storm

    3.全部分组(ALL grouping):tuple被复制到bolt的所有任务。这种类型需要谨慎使用。

大数据之Storm

  4. 全局分组(Global grouping):全部流都分配到bolt的同一个任务。明确地说,是分配给ID最小的那个task。
  5. 无分组(None grouping)
  6. 直接分组(Direct grouping)

应用程序执行流程

大数据之Storm

相关文章: