Storm

Storm基础(八)理解拓扑的并发

2017-04-06  本文已影响72人  quiterr

原文链接Understanding-the-parallelism-of-a-Storm-topology

运行中的topology由这些组成:worker processes, executors and tasks

Storm集群的topology主要由以下实体组成:

  1. Worker processes
  2. Executors (threads)
  3. Tasks
    它们的关系如下:


    The relationships of worker processes, executors (threads) and tasks in Storm

Worker processes执行topology的一个子集,它属于某个topology,可以运行一个或多个executors。在集群中运行的topology一般都有多个Worker processes跑在多个机器上。

executor 是Worker 创建的线程,它可能会运行同一个组件的(spout或bolt)一个或多个任务。

task真正负责数据处理。你代码中实现的spout或bolt在集群中以task对形式执行。

在topology的整个生命周期中,task的数量都不会变,但是executors(threads)的数量可能会经常变化。下面这个等式总是正确的:#threads ≤ #tasks
默认情况下,task和executors数量相同,也就是说,Storm会每个线程执行一个任务。

配置topology的并行度

Storm的并行度指的是组件最开始的executor数量。在这篇文章中,并行度是一个更宽泛的概念,你不仅可以配置executor的数量,也可以配置worker和task的数量。

下面的章节给出了多种配置选项以及如何在代码中设置它们。Storm目前的配置获取顺序:defaults.yaml < storm.yaml < topology-specific configuration < internal component-specific configuration < external component-specific configuration

Number of worker processes

Number of executors (threads)

Number of tasks

代码片段:

topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
               .setNumTasks(4)
               .shuffleGrouping("blue-spout");

上面的代码配置Storm以2个executors (threads)和4个tasks来运行GreenBolt,也就是每个线程跑两个任务。

一个正在运行的topology的例子

例子中但topology包含三个组件:BlueSpout、GreenBolt和YellowBolt。BlueSpout的输出交给GreenBolt,GreenBolt的输出交给YellowBolt。

example-of-a-running-topology

如下是相关配置代码:

Config conf = new Config();
conf.setNumWorkers(2); // use two worker processes

topologyBuilder.setSpout("blue-spout", new BlueSpout(), 2); // set parallelism hint to 2

topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
               .setNumTasks(4)
               .shuffleGrouping("blue-spout");

topologyBuilder.setBolt("yellow-bolt", new YellowBolt(), 6)
               .shuffleGrouping("green-bolt");

StormSubmitter.submitTopology(
        "mytopology",
        conf,
        topologyBuilder.createTopology()
    );

当然,Storm也有其他的配置设置来控制topology的并发度,包括:

如何更改运行中的topology的并发度

Storm的一大优点就是可以不用重启集群或topology就更改worker和executors的数量。这种操作称为再平衡。
有两种再平衡topology的方式:

  1. Storm web UI
  2. CLI
    这是使用CLI的例子:
//Reconfigure the topology "mytopology" to use  worker processes,
//the spout "blue-spout" to use 3 executors and
//the bolt "yellow-bolt" to use 10 executors.

$ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
上一篇下一篇

猜你喜欢

热点阅读