跟我学习Storm_Storm基本架构

  Storm集群类似于一个Hadoop集群。 然而你在Hadoop的运行“MapReduce job”,在Storm上你运行 “topologies”。 “job”和“topologies”本身有很大的不同,其中一个关键的区别是,MapReduce的工作最终完成,而topologies处理消息永远保持(或直到你杀了它)。Strom集群有主要有两类节点:主节点和工作节点。 主节点上运行一个叫做“Nimbus”的守护进程,也就是类似Hadoop的“JobTracker”。 Nimbus 负责在集群分发的代码,将任务分配给其他机器,和故障监测。

  每个工作节点运行一个叫做”Supervisor”的守护进程。Supervisor监听分配给它的机器,根据Nimbus 的委派在必要时启动和关闭工作进程。每个工作进程执行topology的一个子集。一个运行中的topology由很多运行在很多机器上的工作进程组成。

  

  图1 Storm架构

  Nimbus和Supervisors之间所有的协调工作是通过一个Zookeeper集群。 此外,Nimbus的守护进程和Supervisors守护进程是无法连接和无状态的;所有的状态维持在Zookeeper中 或保存在本地磁盘上。这意味着你可以 kill -9 Nimbus 或Supervisors 进程,所以他们不需要做备份。这种设计导致Storm集群具有令人难以置信的稳定性。

  Storm实现了一种数据流模型,其中数据持续地流经一个转换实体网络。一个数据流的抽象称为一个流(stream,这是一个无限的元组序列。元组(tuple就像一种使用一些附加的序列化代码来表示标准数据类型(比如整数、浮点和字节数组)或用户定义类型的结构。每个流由一个唯一ID定义,这个ID可用于构建数据源和接收器(sink)的拓扑结构。流起源于喷嘴(spout,Spout将数据从外部来源流入 Storm 拓扑结构中。

  

  图2 Storm的拓扑结构

  接收器(或提供转换的实体)称为螺栓(bolt。螺栓实现了一个流上的单一转换和一个 Storm 拓扑结构中的所有处理。Bolt既可实现 MapReduce之类的传统功能,也可实现更复杂的操作(单步功能),比如过滤、聚合或与数据库等外部实体通信。典型的 Storm 拓扑结构会实现多个转换,因此需要多个具有独立元组流的Bolt。Bolt和Spout都实现为Linux系统中的一个或多个任务。

  但是,Storm 架构中一个最有趣的特性是有保障的消息处理。Storm 可保证一个Spout发射出的每个元组都会处理;如果它在超时时间内没有处理,Storm会从该Spout重新发射该元组。此功能需要一些聪明的技巧来在拓扑结构中跟踪元素,也是Storm的重要的附加价值之一。

  除了支持可靠的消息传送外,Storm还使用ØMQ(ZeroMQ)最大化消息传送性能(删除中间排队,实现消息在任务间的直接传送)。ØMQ合并了拥塞检测并调整了它的通信,以优化可用的带宽。

  Storm 0.9.0.1版本的第一亮点是引入了Netty Transport。Storm网络传输机制实现可插拔形式,当前包含两种方式:原来的ØMQ传输,以及新的Netty实现;在早期版本中(0.9.x之前的版本),Storm只支持ØMQ传输,由于ØMQ是一个本地库(native library),对平台的依赖性较高,要完全正确安装还是有一定挑战性。而且版本之间的差异也比较大;Netty Transport提供了纯JAVA的替代方案,消除了Storm的本地库依赖,且比ØMQ的网络传输性能快一倍以上。

时间: 2024-08-10 15:08:12

跟我学习Storm_Storm基本架构的相关文章

数据库学习之--Oracle 架构与MySQL架构对比

数据库学习之--Oracle 架构与MySQL架构对比 一.Oracle .MySQL应用对比 如果要说明三者的区别,首先就要从历史入手. Oracle:中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision. Ellision 32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十几家公司,老婆也离他而去.开始创业时只有1200美元,却使得Oracle公司连续12年销售额每年翻一番. Oracle成立于1977年,早期的理论基础,反而来自于一篇IBM的论文<A

成小胖学习微服务架构&#183;基础篇

看到最近“微服务架构”这个概念这么火,作为一个积极上进的程序猿,成小胖忍不住想要学习学习.而架构师老王(不是隔壁老王)最近刚好在做公司基础服务的微服务化研究和落地,对此深有研究. 于是成小胖马上屁颠屁颠的跑过去向老王请教:“王哥,我看微服务架构这么火,我也想学,您给我讲讲啥是微服务架构呗?” 老王笑了笑说:“要想知道什么是微服务架构,你得先知道什么系统架构设计.” 成小胖的理想是成为一名架构师,平时积累了不少知识,因此对“系统架构设计”这个概念还是很熟悉的,因此他马上就给出了答案[1]: 系统架

高可用软件Keepalived学习之Keepalived架构学习

最近在测试新游戏的部署方案,我们正在测试的一款手游后端代码部署采用HAProxy+Keepalived的方式进行部署,所以顺便研究下Keepalived的详细资料. Keepalived的官方地址是http://www.keepalived.org/index.html Keepalived是一个用C语言编写的路由软件,它的目的是为Linux系统或基于Linux系统的基础架构提供简单而强壮的负载均衡和高可用机制.负载均衡框架依赖于LVS的内核模块并提供四层负载均衡功能.它可以根据负载均衡器后端的

Hadoop学习(五)-MapReduce架构原理

概述 hadoop主要是用于应对海量数据的存储和计算的,前面hdfs文件系统,则重点是用于海量数据的存储.那么有了这么多数据,我们又该怎么在这些数据里面来提取我们需要的信息呢?这个时候hadoop中出现了一个非常重要的成员MapReduce.MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.注意这个并行运算,它不再是我们传统意义上的串行计算,它可以在不同的进程中进行并行的运算.概念"Map(映射)"和"Reduce(归约)",是它们的主要思

SpringMVC学习(二)——SpringMVC架构及组件

相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗? 这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来说比较容易懂的,下面我会给出SpringMVC的框架结构图,这个图相对来说会更复杂,不过经过我细致入微的讲解,相信大家都可以深入理解. SpringMVC框架结构 SpringMVC框架结构如下图所示: 下面我会对SpringMVC框架结构作细致入微的讲解. 架构流程 用户发送请求至前端控制器Dispat

jQuery源码学习1——整体架构篇

由于jQuery的源码比较复杂,所以我选择从jQuery1.0.0版本开始学习,逐步深入. 而且本系列文章包含大量的个人观点,纯属本人学习的记录 jQuery1.0.0只有1800行左右的代码,相对来讲看起来还是比较简单的 首先,想说一下我对jQuery的理解 jQuery其实就是一个很大的构造函数 它为我们提供了很多实例化方法 当然,由于在js中函数本身就是对象 因此jQuery也提供了很多的静态方法 个人认为,这些静态方法更为底层 今天把jQuery的架构梳理了一下 其实我们可以将其中的方法

GreenPlum学习之(Share-nothing)架构

当今世界是一个信息化的世界,我们的生活中无论是生活.工作.学习都离不开信息系统的支撑.而信息系统的背后用于保存和处理最终结果的地方就是数据库.因此数据库系统就变得尤为重要,这意味着如果数据库如果面临问题,则意味着整个应用系统也会面临挑战,从而带来严重的损失和后果. 如今“大数据”这个词已经变得非常流行,虽然这个概念如何落地不得而知.但可以确定的是,随着物联网.移动应用的兴起,数据量相比过去会有几何级的提升,因此数据库所需要解决的问题不再仅仅是记录程序正确的处理结果,还需要解决如下挑战: 当数据库

Nodejs学习之多进程架构

操作系统的资源是有限的,这通常意味者操作系统分配给进程或线程的资源是有限的,在多核cpu普及的时代,如果只使用单核(常说node是单线程的),则无法充分压榨硬件性能,今天和大家介绍的就是nodejs多进程架构,希望可以帮助大家更好的学习nodejs ,一起来看看吧.  模块介绍  node提供了child_process模块,该模块提供4个方法  1.spawn() 启动一子进程来执行命令  2.exec() 启动一子进程来执行命令,与spawn()不同的是提供一个回调函数获知子进程的状况  3

go微服务框架go-micro深度学习(一) 整体架构介绍

产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线都会牵一发而动全身.项目微服务化,松耦合模块间的关系,是一个很好的选择,随然增加了维护成本,但是还是很值得的. 微服务化项目除了稳定性我个人还比较关心的几个问题: 一: 服务间数据传输的效率和安全性. 二: 服务的动态扩充,也就是服务的注册和发现,服务集群化. 三: 微服务功能的可订制化,因为并不是所有的功能都会很符合你的