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. 【Java并发编程实战】—–synchronized

    在我们的实际应用其中可能常常会遇到这样一个场景:多个线程读或者.写相同的数据,訪问相同的文件等等.对于这样的情况假设我们不加以控制,是非常easy导致错误的. 在java中,为了解决问题,引入临界区概 ...

  2. Llama-impala on yarn的中间协调服务

    本文基于CDH发行版下的Hadoop Yarn和Impala 早期的Impala版本号中.为了使用Impala.我们一般会在以Client/Server的结构在各个集群节点启动impala-serve ...

  3. 剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面

    题目:输入一个整数数组.实现一个函数来调整该数组中数字的顺序.使得全部奇数位于数组的前半部分.全部偶数位于数组的后半部分. 1.基本实现: 假设不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,每 ...

  4. cocos2d 3.3 lua 代码加密 luac

    1.0 cocos luacompile 使用方法 我用的普通的cocos2d lua,没用quick,quick好像能够对整个资源包含图像和音频都加密,打包成zip.我看了下luacompile 的 ...

  5. 微信小程序发送模板消息

    微信小程序发送模板消息 标签(空格分隔): php 看小程序文档 [模板消息文档总览]:https://developers.weixin.qq.com/miniprogram/dev/framewo ...

  6. MarkDown 语法备份

    标题 标题1 标题2 标题3 标题4 标题5 无序列表 飞雪连天射白鹿 书神侠倚碧鸳 有序列表 飞雪连天射白鹿 笑书神侠倚碧鸳 超链接 百度 图片 粗体和斜体 粗体 斜体 表格 左对齐标题 右对齐标题 ...

  7. 修改WebAPI路由控制访问

    1.方式一:修改RouteConfig.cs文件 2.方式二:通过在方法上方添加[Route("api/XXXX")]来控制

  8. ZBrush中Blob点滴笔刷介绍

    对于ZBrush®来说,笔刷的使用时至关重要的,ZBrush中给我们提供了越来越多的笔刷的同时,我们也要根据经验来合理选择笔刷.本文内容小编将分享Blob点滴笔刷的简单介绍,该笔刷在使用时笔头犹如一股 ...

  9. LeetCode Golang 5. 最长回文子串

    5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab&quo ...

  10. Eclipse本地创建新的GIT分支,并推送至远程Git分支

    本地创建新的GIT分支: 1.右击要创建新分支的项目——Team——Switch To——New Branch…: 2.在弹出的对话框中name框中输入要创建的分支名称,(如果是当前显示的要拷贝的分支 ...