JStorm中的并行( parallelismction )介绍

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

时间: 2024-10-10 15:14:35

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

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

上文<.Net中的并行编程-3.ConcurrentQueue实现与分析>分析了ConcurrentQueue的实现,本章就基于ConcurrentQueue实现一个高性能的异步队列,该队列主要用于实时数据流的处理并简化多线程编程模型.设计该队列时考虑以下几点需求(需求来自公司的一个实际项目): 1. 支持多线程入队出队,尽量简化多线程编程的复杂度. 2. 支持事件触发机制,数据入队时才进行处理而不是使用定时处理机制, 而且内部能阻塞消费者线程. 3. 出队时数据处理的顺序要保证和入队时是一致

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

            本文是.Net中的并行编程第六篇,今天就介绍一些我在实际项目中的一些常用优化策略.      一.避免线程之间共享数据 避免线程之间共享数据主要是因为锁的问题,无论什么粒度的锁,最好的线程之间同步方式就是不加锁,这个地方主要措施就是找出数据之间的哪个地方需要共享数据和不需要共享数据的地方,再设计上避免多线程之间共享数据. 在以前做过的某项目,开始时设计的方案: 开始设计时所有的数据都放入到了公共队列,然后队列通知多个线程去处理数据,队列采用互斥锁保证线程同步,造成的结果就

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

在上篇文章<.net中的并行编程-1.基础知识>中列出了在.net进行多核或并行编程中需要的基础知识,今天就来分析在基础知识树中一个比较简单常用的并发数据结构--.net类库中无锁栈的实现. 首先解释一下什么这里“无锁”的相关概念. 所谓无锁其实就是在普通栈的实现方式上使用了原子操作,原子操作的原理就是CPU在系统总线上设置一个信号,当其他线程对同一块内存进行访问时CPU监测到该信号存在会,然后当前线程会等待信号释放后才能对内存进行访问.原子操作都是由操作系统API实现底层由硬件支持,常用的操

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

自己在Excel整理了很多想写的话题,但苦于最近比较忙(其实这是借口).... 上篇文章<.Net中的并行编程-4.实现高性能异步队列>介绍了异步队列的实现,本篇文章介绍我实际工作者遇到了处理多线程问题及基于异步队列底层数据结构的解决方案. 需求如下:1.提供数据服写入务供上层应用调用,数据写入服务处理的吞吐量要达到60w/s每秒,也就是用户每秒发送60w的数据然后通过数据写入服务写到数据库中(数据库为公司自主研发的实时数据库). 2.尽量简化上层应用调用服务的复杂度. 一.分析性能瓶颈: 1

理解和使用SQL Server中的并行

什么是并行? 我们从小就听说过"人多力量大"."人多好办事"等,其思想核心就是把一个任务分给许多人,这样每个人只需要做很少的事情就能完成整个任务.更重要的是,如果额外的人专门负责分配工作,那么任务的完成时间就可以大幅减少了. 数糖豆 设想你正面对一个装满各式各样糖豆的罐子,并且要求书有多少个.假设你能平均每秒数出五个,需要大于十分钟才能数完这个盒子里的3027个糖豆. 如果你有四个朋友帮助你去做这个任务.你就有了多种策略来安排这个数糖豆任务,那让我们模仿SQLSer

苹果电脑中FaceTime怎么设置介绍

不少Mac用户对这款FaceTime工具都是有一定了解的,不过还是有很多Mac用户们不知道怎么轻松对FaceTime进行设置,其实方法还是比较简单易操作,下面我们就一起来苹果电脑中FaceTime怎么设置介绍中瞧瞧吧,希望这款苹果电脑中FaceTime怎么设置介绍可以给Mac用户们带来有效的帮助. 苹果电脑中FaceTime怎么设置介绍: 1.在 Mac 上打开 FaceTime 以后,请先用我们自己的 Apple ID 来登录 FaceTime 应用,如图所示 2.接下来系统会显示与我们的 A

va_list中的_vsntprintf使用介绍

相信大家都用过sprintf这个函数,就是下面这样: int sprintf( char *buffer, const char *format [, argument] ... ); 在之前看到了用va_list实现的几个处理字符串的函数,基本都是这种形式的,感到非常好用,今天来谈一下 va_list 的使用问题. va_list的用法和原理网上一大堆,我都懒得抄了,大概介绍一下它的用法就好: 第一步:定义一个 va_list变量 . 第二步:使用  va_start  函数初始化这个变量.

BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览 OAuth介绍

BEGINNING SHAREPOINT? 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览  OAuth介绍 OAuth是一个开放的标准,由Internet Engineering Task Force管理,被设计允许应用程序以Web友好的方式代表应用程序或用户访问服务.

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

在上文<.Net中的并行编程-2.ConcurrentQueue的实现与分析> 中解释了无锁的相关概念,无独有偶BCL提供的ConcurrentQueue也是基于原子操作实现, 由于ConcurrentQueue的代码较多所以本文主要分析几个常用操作: 入队(EnQueue) .出队(TryDequeue) .是否为空(IsEmpty).获取队列内元素数量(Count). 一.ConcurrentQueue内部结构: 1.实现原理 众所周知,在普通的非线程安全队列有两种实现方式: 1.使用数组