JStorm中的并行( parallelismction )介绍

JStrom中。一个计算任务通过多台机器使得计算分解为多个独立并行执行在集群内执行的任务(tasks)。从而得到水平扩展。

JStorm中,一个任务(task)就是一个能够执行在集群内不论什么节点的一个spout或一个bolt实例。

要了解这个并行怎样工作的。我们首先要了解在JSorm集群内运行一个拓扑所涉及到的4个重要概念:

 



 - 节点(Nodes)/机器(machines):一个JStorm集群包括一到多个节点,这个节点执行一个work。

- Workers(JVMs):这些是执行在一个节点的独立的JVM进程。

每一个节点能够配置执行一个到多个workers,即多少个JVM进程。

- Executors(threads):这是执行在一个worker JVM进程的java线程。

Strom中,多个tasks能够执行在一个线程中。

假设没有覆盖相关配置,Strom会一个task一个线程。JStrom中,一个task一个线程。和Storm不一样了。

- Tasks(bolt/spout实例):Tasks是spouts和bolts的实例,实例方法中的

 nextTuple()和execute()方法会被线程调用。

----------



----------

配置拓扑的workers

=======



一个拓扑(topology)能够配置多个workers(jvm进程),配置方式:



 



    



> Config config = new Config();

config.setNumWorkers(2);



上面的配置,我们设置了2个workers。默认配置是1,所以我们通常会配置这个參数,以合理利用集群资源。

Jstorm 的组成(The Components of Jstorm)

=======



 

在Jstorm集群中,集群节点分为两类:主控节点(master node ) 和工作节点(worker nodes)。

主控节点执行者一个守护进程(daemon)称之为Nimbus,它主要负责向集群其他工作节点(worker nodes)分发提交来的代码及分配任务(tasks)。而且监视者每一个任务的成功与失败。



工作节点(worker nodes)也执行者一个守护进程(daemon)称之为Supervisor。它执行一个拓扑(topology)的一部分。

在Jstorm中,一个拓扑(topology)执行在非常多机器上的很多工作节点(worker nodes)上。

Jstorm中各节点被设计成无状态的,而它们组成的集群状态被保存在Zookeeper集群上。所以这些节点能够失败或重新启动而不影响整个系统的健康执行。



Nimbus  --->  Zookeeper --->  Supervisor

相关 博文:JStorm中消息确保处理机制 http://blog.csdn.net/doctor_who2004/article/details/47710331

JStorm/Strom配置executors和tasks(线程和实例)http://blog.csdn.net/doctor_who2004/article/details/47709945

JStorm中的并行( parallelismction )介绍的更多相关文章

  1. 理解和使用SQL Server中的并行

    许多有经验的数据库开发或者DBA都曾经头痛于并行查询计划,尤其在较老版本的数据库中(如sqlserver2000.oracle 7.mysql等).但是随着硬件的提升,尤其是多核处理器的提升,并行处理 ...

  2. .Net中的并行编程-2.ConcurrentStack的实现与分析

    在上篇文章<.net中的并行编程-1.基础知识>中列出了在.net进行多核或并行编程中需要的基础知识,今天就来分析在基础知识树中一个比较简单常用的并发数据结构--.net类库中无锁栈的实现 ...

  3. .Net中的并行编程-6.常用优化策略

                本文是.Net中的并行编程第六篇,今天就介绍一些我在实际项目中的一些常用优化策略.      一.避免线程之间共享数据 避免线程之间共享数据主要是因为锁的问题,无论什么粒度的锁 ...

  4. .Net中的并行编程-5.流水线模型实战

    自己在Excel整理了很多想写的话题,但苦于最近比较忙(其实这是借口).... 上篇文章<.Net中的并行编程-4.实现高性能异步队列>介绍了异步队列的实现,本篇文章介绍我实际工作者遇到了 ...

  5. .Net中的并行编程-4.实现高性能异步队列

    上文<.Net中的并行编程-3.ConcurrentQueue实现与分析>分析了ConcurrentQueue的实现,本章就基于ConcurrentQueue实现一个高性能的异步队列,该队 ...

  6. 使用Memcache在PHP中调试方法的介绍及应用

    使用Memcache在PHP中调试方法的介绍及应用 如果我们在网络开发中,特别是大访问量的web项目开发中,为了提高响应速度,减少数据查询运算,那么我们都会选用memcahce.首先我们必须要安装,接 ...

  7. asp.net中缓存的使用介绍一

    asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...

  8. lua解析脚本过程中的关键数据结构介绍

    在这一篇文章中我先来介绍一下lua解析一个脚本文件时要用到的一些关键的数据结构,为将来的一系列代码分析打下一个良好的基础.在整个过程中,比较重要的几个源码文件分别是:llex.h,lparse.h.l ...

  9. .Net中的并行编程-3.ConcurrentQueue实现与分析

    在上文<.Net中的并行编程-2.ConcurrentQueue的实现与分析> 中解释了无锁的相关概念,无独有偶BCL提供的ConcurrentQueue也是基于原子操作实现, 由于Con ...

随机推荐

  1. HDU 2874 LCA离线算法 tarjan算法

    给出N个点,M条边.Q次询问 Q次询问每两点之间的最短距离 典型LCA 问题   Marjan算法解 #include "stdio.h" #include "strin ...

  2. angularjs1-7,供应商

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  3. caffe mnist实例 --lenet_train_test.prototxt 网络配置详解

    1.mnist实例 ##1.数据下载 获得mnist的数据包,在caffe根目录下执行./data/mnist/get_mnist.sh脚本. get_mnist.sh脚本先下载样本库并进行解压缩,得 ...

  4. java/javascript 时间操作工具类

    一.java 时间操作工具类 import org.springframework.util.StringUtils; import java.text.ParseException; import ...

  5. C语言中文件定位函数总结

    C语言中文件定位函数主要是:fseek, ftell, fsetpos, fgetpos. 先来讲前两个函数,这是最基本的定位函数: fseek函数:能把文件指针移动到文件任何位置,其原型是:int ...

  6. CheckBox的Attributes

    在看老同事写的代码的时候,发现了这样的一段代码:之前自己没有遇到过,记录下吧. 大致是这样的 foreach (GridViewRow grv in GridView1.Rows) { CheckBo ...

  7. java真实面试题(1)

    2019年春杭州邦盛科技java面试题. 1,java基本类型 byte,char,short,int,long,float,double,boolean. 2,重写重载 重写,子类重写父类的方法,方 ...

  8. 基于cxf的webService服务发布及客户端开发

    学习地址: http://www.cnblogs.com/leihenqianshang/category/795140.html

  9. Git的初始化设置

    Git安装成功之后,新建一个初始化的仓库以及配置GitHub仓库 Git配置GitHub账户 安装完成之后要进行git的配置,这里配置的是GitHub账户 MisSa@DESKTOP-PIQ06QO ...

  10. ansible 定义主机用户和密码

    定义主机组用户和密码 [webservers] ansible[01:04] ansible_ssh_user='root' ansible_ssh_pass='AAbb0101' [root@ftp ...