Storm基础(一)概念

原文链接:http://storm.apache.org/releases/1.0.3/Concepts.html

本人原创翻译,转载请注明出处

之前翻译过Storm的Tutorial:http://www.jianshu.com/p/ea078dbd9958 所以这次不会再一字一句等翻译。

这篇文章列出了Storm的主要概念和相关的资源链接(可以获取更多信息)。讨论的概念包括:

  1. Topologies
  2. Streams
  3. Spouts
  4. Bolts
  5. Stream groupings
  6. Reliability
  7. Tasks
  8. Workers

Topologies

应用程序的逻辑被打包进了一个Storm topology。spouts和bolts以stream groupings相连,构成的图就是topology。

Streams

stream是Storm的核心抽象。stream是tuple的无限序列,tuple以分布式的方式并行的被创建和处理。默认情况下,tuples可以包含integers, longs, shorts, bytes, strings, doubles, floats, booleans, and byte arrays。你可以定义serializers,这样自定义的类型也可以在tuples中直接使用。

Spouts

spout是streams的源。spouts可以是可靠的,也可以是不可靠的。如果tuple处理失败,可靠的spout会重传它,不可靠的spout会在emit tuple后立即“忘掉”它。

Bolts

bolts是topology里真正负责处理tuple的单元。

Stream groupings

定义topology的一部分就是要定义bolt该接收哪个stream作为输入,Stream groupings就是用来做这件事。有8种内建的Stream groupings,你也可以实现CustomStreamGrouping 接口来自定义一个Stream groupings。

  1. Shuffle grouping: tuples随机分配给bolts,每个bolt收到的tuple数量相同。
  2. Fields grouping: stream被grouping中指定的字段分割。举个例子,如果一个stream以"user-id" 字段分组,"user-id" 相同的tuple将总是分配到相同的任务,"user-id" 不同的tuple可能分配到不同的任务。
  3. Partial Key grouping: 和Fields grouping一样以字段来分组,但是在下游的bolts之间做了负载均衡,当输入数据不均衡的时候可以更好的利用系统资源。这篇论文说明了它是如何工作的以及它的优点。
  4. All grouping: 流将被复制到所有bolts,使用这种分组的时候要特别小心。
  5. Global grouping: 整个流都将被分配到唯一一个bolt任务,通常是id最小的那个。
  6. None grouping:这种分组方式意味着你不关心如何分组。目前,这种方式等价于shuffle groupings。
  7. Direct grouping: 这是一种特殊的分组,由tuple的生产者来决定谁来消费这个tuple。Direct groupings只能搭配direct streams使用,也就是说tuple必须通过emitDirect方法发出。bolt可以通过TopologyContext 或 跟踪emit的返回值(返回值就是接收tuple的任务ids)来得到消费者的任务ids。
  8. Local or shuffle grouping: 如果目的bolt在相同的worker进程中有一个或多个任务,tuples就会被随机发送给这些同进程的任务。否则就按普通shuffle grouping处理。

Reliability

这部分专门翻译了一篇文章:http://www.jianshu.com/p/a51167bab444

Tasks

每个spout和bolt都以集群中任务的形式执行。每个任务对应一个线程,setSpout和setBolt用来设置任务的并发度。

Workers

topology在一个或多个worker进程中执行。每个worker进程是一个物理JVM,负责执行topology中所有任务的一个子集。举个例子,如果topology总的并发是300,worker数时50,那么每个worker执行6个任务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文链接Storm Tutorial 本人原创翻译,转载请注明出处 这个教程内容包含如何创建topologies及...
    quiterr阅读 1,662评论 0 6
  • Storm入门系列之一:storm核心概念及特性 本文的将介绍一些 storm 入门的基础知识,包括 storm ...
    zhaif阅读 3,183评论 0 17
  • 什么是实时流计算? 主要的处理模式可以分为:流处理,批处理 流处理是直接处理,有时也分为在线,离线,近线(st...
    Bloo_m阅读 5,088评论 1 1
  • Storm 系统中包含以下几个基本概念:拓扑(Topologies)流(Streams)数据源(Spouts)数据...
    发光的鱼阅读 842评论 0 0
  • 闭上眼睛 我站在一望无际的草原上 拎着手包 脚踩 右手拿着赶️鞭子 追着儿在草原上奔跑 一边跑一边数 一只...
    cc418阅读 309评论 0 0