Storm架构分析

来源:互联网 发布:mac ox驱动下载 编辑:程序博客网 时间:2024/04/28 21:35

Storm是个实时的、分布式以及具备高容错的计算系统。
  1) Storm 特性
   1. 易于扩展。对于扩展,你只需要添加机器和改变对应的topology(拓扑)设置。Storm使用Zookeeper进行集群协调,这样可以充分的保证大型集群的良好运行。
   2. Storm的容错机能:一旦topology递交,Storm会一直运行它直到topology被废除或者被关闭。而在执行中出现错误时,也会由Storm重新分配任务。
  2)Storm架构
   Storm物理架构

                                 Storm物理架构图

Storm逻辑架构

                                 Storm逻辑架构

   Spout:在一个topology中产生源数据流的组件,从来源处读取数据并放入topology。Spout中最主要的方法就是nextTuple(),该方法会发射一个新的tuple到topology,如果没有新tuple发射则会简单的返回。
   Bolt:在一个topology中接受数据然后执行处理的组件。
3) Stream Groupings:
   Stream Grouping定义了一个流在Bolt任务间该如何被切分。这里有Storm提供的6个Stream Grouping类型:
   1. 随机分组(Shuffle grouping)随机分发tuple到Bolt的任务,保证每个任务获得相等数量的tuple。
   2. 字段分组(Fields grouping):根据指定字段分割数据流,并分组。例如,根据“user-id”字段,相同“user-id”的元组总是分发到同一个任务,不同“user-id”的元组可能分发到不同的任务。
   3. 全部分组(All grouping):tuple被复制到bolt的所有任务。这种类型需要谨慎使用。
   4. 全局分组(Global grouping):全部流都分配到bolt的同一个任务。明确地说,是分配给ID最小的那个task。
   5. 无分组(None grouping):你不需要关心流是如何分组。目前,无分组等效于随机分组。但最终,Storm将把无分组的Bolts放到Bolts或Spouts订阅它们的同一线程去执行(如果可能)。
   6. 直接分组(Direct grouping):这是一个特别的分组类型。元组生产者决定tuple由哪个元组处理者任务接收。
   当然还可以实现CustomStreamGroupimg接口来定制自己需要的分组。

0 0
原创粉丝点击