Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

时间:2021-10-24 20:47:24

工作进程、平行度就、任务数解释

1. 第一种情况

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

如上使用默认模式,Node 中运行情况:

 Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要) 

1个 JVM 每个Spout、Bolt 一个Executors 一个Task

2. 第二种情况

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

说明如下:

1. 独立JVM Worker:2

 printWriterTopologyBuilder.setNumWorkers(2);
  public void setNumWorkers(int numWorkers) {
     printWriterTopology.setNumWorkers(numWorkers);
  }

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

2.  printWriterTopologyBuilder.setSpout(2);

public void setSpout(int parallelismSize) {
     hasSpout = true;
     printWriterTopology.setSpout(parallelismSize, parallelismSize * 1);
    }

 每个Worker 每个PrintWriterSpout中一个Executor ,运行一个Task, 总共2个Parrallelism

  Each Worker = Parrallelism Size / Worker Size

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

3.  printWriterTopologyBuilder.setPrintBolt(4, 8);  

  public void setPrintBolt(int parallelismSize, int numTasks) {
     hasPrintBolt = true;
     printWriterTopology.setPrintBolt(parallelismSize, numTasks);
    }


    public void setWriterBolt(int parallelismSize, int numTasks, BoltGroupType boltGroupType) {
     this.hasWriterBolt = true;
     printWriterTopology.setWriterBolt(parallelismSize, numTasks, boltGroupType);

    }

    Each Worker Executors = 4/2 = 2  即 每个worker 两个 Executors
    Each Executor Task Count = numTasks/parallelismSize 
    8/4=2

即 4个Executors 共计 8个Task

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

4. printWriterTopologyBuilder.setWriterBolt(8, 8);

protected void setWriterBolt(int parallelismSize, int numTasks) {
     setWriterBolt(parallelismSize, numTasks, BoltGroupType.ShuffleGrouping);
  }
   
  Each Worker Executors = Parrallelism Size / Worker Size 
     8/2 =4 
   即 每个Worker中 4个Executors, 每个Executor Task Count =8/8=1

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

3. 如何理解Task 和 Executor 呢?

如果我们将 NumWorker 配置成4, 将会有哪些变化呢?

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

我们可以学习到: Executors 可以伴随JVM Worker 数量的提升,平均分布到不同JVM 中运行,
但是 Task 不可以,必须伴随Executors 执行,这里性能提高提升不如WriterBolt 好。

再来一个极端配置: 假如我们有8台 Supervisor,配置如下

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)

结论: 8个Task 在一个Executor JVM 中无法通过增加Num worker 提升处理性能。  

Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)