Storm基本组成

来源:互联网 发布:抓去淘宝和5173的单子 编辑:程序博客网 时间:2024/05/29 12:00

Storm框架的核心由7个部分组成,如图所示,它们同时也是Storm的基本组成部分。

Storm

  • Topology(拓扑)

一个拓扑是一个图的计算。用户在一个拓扑的每个节点包含处理逻辑,节点之间的链接显示数据应该如何在节点之间传递。Topology的运行是很简单的。

  • Stream(流)

流是Storm的核心抽象。一个流是一个无界Tuple序列,Tuple可以包含整型、长整型、短整型、字节、字符、双精度数、浮点数、布尔值和字节数组。用户可以通过定义序列化器,在本机Tuple使用自定义类型。

  • Spout(喷口)

Spout是Topology流的来源。一般Spout从外部来源读取Tuple,提交到Topology(如Kestrel队列或Twitter API)。Spout可分为可靠的和不可靠的两种模式。Spout可以发出超过一个流。

  • Bolt(螺栓)

Topology中的所有处理都在Bolt中完成。Bolt可以完成过滤、业务处理、连接运算、连接、访问数据库等业务。Bolt可以做简单的流的转换,发出超过一个流,主要方法是execute方法。完全可以在Bolt中启动新的线程做异步处理。

  • Stream grouping(流分组)

流分组在Bolt的任务中定义流应该如何分区。Storm有7个内置的流分组接口:随机分组(Shuffle grouping)、字段分组(Fields grouping)、全部分组(All grouping)、全局分组(Global grouping)、无分组(None grouping)、直接分组(Direct grouping)、本地或者随机分组(Local or shuffle grouping)。

  • Task(任务)

每个Spout或者Bolt在集群执行许多任务。每个任务对应一个线程的执行,流分组定义如何从一个任务集到另一个任务集发送Tuple。可通过TopologyBuilder类的setSpout()和setBolt()方法来设置每个Spout或者Bolt的并行度。

  • Worker(工作进程)

Topology跨一个或多个Worker节点的进程执行。每个Worker节点的进程是一个物理的JVM和Topology执行所有任务的一个子集。


0 0
原创粉丝点击