Storm 配置图文解析

Storm 配置图文解析

参考阅读:http://www.xiaofateng.com/?p=959

     ==============================
     |     sample-topology        |
     |  ------------------------  |   Task 1           Task 2          Task 3
     |  |   Worker Process 1   |  |     T1               T2              T3
     |  |           +--------+ |  |    Spout     =>     Bolt      =>    Bolt
     |  | +------+  | +----+ | |  | parallelism      parallelism     parallelism
     |  | |  T3  |  | | T2 | | |  |    hint=2          hint=2          hint=6
     |  | +------+  | +----+ | |  |
     |  |           | +----+ | |  |    combined parallelism = 2 + 2 + 6 = 10
     |  | +------+  | | T2 | | |  |
     |  | |  T3  |  | +----+ | |  |  Each of the 2 worker processes will spawn 10/2=5 threads
     |  | +------+  +--------+ |  |
     |  |                      |  |    T1: parallelism hint = initial executors
     |  | +------+  +--------+ |  |
     |  | |  T3  |  |   T1   | |  |    T2: the T2 bolt was configured to use 2 executors and four tasks.
     |  | +------+  +--------+ |  |        For this reason each executor runs two tasks for this bolt.
     |  ------------------------  |
     |                            |
     |  ------------------------  |    Config conf = new Config();
     |  |   Worker Process 2   |  |
     |  |           +--------+ |  |    // run as 2 workers on 2 supervisors
     |  | +------+  | +----+ | |  |    conf.setNumWorkers(2);
     |  | |  T3  |  | | T2 | | |  |
     |  | +------+  | +----+ | |  |    // T1: 2 executors for spout
     |  |           | +----+ | |  |    topologyBuilder.setSpout("T1-spout", new T1Spout(), 2);
     |  | +------+  | | T2 | | |  |
     |  | |  T3  |  | +----+ | |  |    // T2: 2 executors for bolt with total 4 tasks
     |  | +------+  +--------+ |  |    topologyBuilder.setBolt("T2-bolt", new T2Bolt(), 2)
     |  |                      |  |        .setNumTasks(4).shuffleGrouping("T1-spout");
     |  | +------+  +--------+ |  |    // T3: 6 executors for bolt (default 1 task for 1 executor)
     |  | |  T3  |  |   T1   | |  |    topologyBuilder.setBolt("T3-bolt", new T3Bolt(), 6).shuffleGrouping("T2-bolt");
     |  | +------+  +--------+ |  |
     |  ------------------------  |    StormSubmitter.submitTopology("sample-topology", conf, topologyBuilder.createTopology());
     ==============================

说明:

一个worker进程(process)会产生N个线程(executor),那么并行度(parallelism)就是所有线程的数目。setNumWorkers

任务(task)是线程执行的工作队列,线程的任务数说明线程的吞吐能力。一个线程的各个任务之间并不是并发的。setNumTasks

线程(executor)是执行任务的上下文环境。

参照上图理解各个配置的含义。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-18 10:38:58

Storm 配置图文解析的相关文章

[转载]AVL树(一)之 图文解析 和 C语言的实现

概要 本章介绍AVL树.和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现.本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++和Java版本的实现. 建议:若您对"二叉查找树"不熟悉,建议先学完"二叉查找树"再来学习AVL树. 目录 1. AVL树的介绍 2. AVL树的C实现3. AVL树的C实现(完整源码) 4. AVL树的C测试程序 转载请注明出处:http://www.cnblogs.

[转载]伸展树(一)之 图文解析 和 C语言的实现

概要 本章介绍伸展树.它和"二叉查找树"和"AVL树"一样,都是特殊的二叉树.在了解了"二叉查找树"和"AVL树"之后,学习伸展树是一件相当容易的事情.和以往一样,本文会先对伸展树的理论知识进行简单介绍,然后给出C语言的实现.后序再分别给出C++和Java版本的实现:这3种实现方式的原理都一样,选择其中之一进行了解即可.若文章有错误或不足的地方,希望您能不吝指出! 目录 1. 伸展树的介绍 2. 伸展树的C实现 3. 伸展树的

MHA大杀器——mysql主、从双击热备配置安装解析

MHA的主要作用: 在mysql的主从复制中,当master崩溃了,利用mha实现backup顶替崩溃的master自动切换为master继续工作,从而实现高可用. 下面介绍本次实验的环境: MHA分为manager管理节点和node节点,一般来讲最少是三台服务器,两台node节点,一台manager节点,但本次环境限制,只能使用两台,所以把manager也装在一台node节点上. 两台服务器,两个网口: IP: 10.2.16.253     10.0.0.1  node1 10.2.16.2

spring中quatz的多定时任务配置图文详解

近来公司让用quatz框架做定时功能,而且还是执行多定时任务,真是苦恼. 虽然从网上搜了很多资料,但是写法上不太尽如人意,最后还是请教了螃蟹大神,给的配置建议就是简单啊,现在拿来分享下: 这里我们需要的有两部分,一个是java中的处理类,一个是quatz的配置文件,截图如下applicationContext_quartz.xmlquatz的配置文件地址地址:http://www.itxxz.com/a/kuangjia/kuangjiashili/2014/0602/10.html java中

DNS各种基本配置(正向解析区域、反向解析区域;主/从;子域;基本安全控制)

DNS服务器所提供的服务是完成将主机名和转换为IP地址的工作.为什么需要将主机名转换为IP地址的工作呢?这是因为,当网络上的一台客户机访问某一服务器上的资源时,用户在浏览器地址栏中输入的是人类便于识记的主机名和域名.而网络上的计算机之间实现连接却是通过每台计算机在网络中拥有的惟一的IP地址来完成的,这样就需要在用户容易记忆的地址和计算机能够识别的地址之间有一个解析,DNS服务器便充当了地址解析的重要角色. 域名严格意义上的称呼为FQDN(Full Qualified Domain Name).域

行高:line-height图文解析

行高——line-height 初入前端的时候觉得CSS知道display.position.float就可以在布局上游刃有余了,随着以后工作问题层出不穷,才逐渐了解到CSS并不是几个style属性那么简单,最近看了一些关于行高的知识,就此总结一下. 所谓行高是指文本行基线间的垂直距离.要想理解这句话首先得了解几个基本知识: 顶线.中线.基线.底线 <!DOCTYPE html> <html> <head> <title>Test</title>

Python安装、配置图文详解

原文地址:http://weixiaolu.iteye.com/blog/1617440 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(IDE) 1. 在Eclipse中安装PyDev插件 2. 配置Python Interpreters 四. 创建Python Project 五. 编写HelloWorld 六. 小结 一. Python简介: Python在Linux.wi

Python安装、配置图文详解(转载)

Python安装.配置图文详解 目录: 一. Python简介 二. 安装python 1. 在windows下安装 2. 在Linux下安装 三. 在windows下配置python集成开发环境(IDE) 1. 在Eclipse中安装PyDev插件 2. 配置Python Interpreters 四. 创建Python Project 五. 编写HelloWorld 六. 小结 一. Python简介: Python在Linux.windows.Mac os等操作系统下都有相应的版本,不管在

二项堆(一)之 图文解析 和 C语言的实现

概要 本章介绍二项堆,它和之前所讲的堆(二叉堆.左倾堆.斜堆)一样,也是用于实现优先队列的.和以往一样,本文会先对二项堆的理论知识进行简单介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现:实现的语言虽不同,但是原理一样,选择其中之一进行了解即可.若文章有错误或不足的地方,请不吝指出! 目录1. 二项树的介绍2. 二项堆的介绍3. 二项堆的基本操作4. 二项堆的C实现(完整源码)5. 二项堆的C测试程序 转载请注明出处:http://www.cnblogs.com/skywan