跟我学习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的网络传输性能快一倍以上。
跟我学习Storm_Storm基本架构的更多相关文章
- JavaWeb学习之三层架构实例(三)
引言 通过上一篇博客JavaWeb学习之三层架构实例(二)我们基本上已经实现了对学生信息列表的增删改查操作(UI除外),但是不难看出,代码冗余度太高了,尤其是StudentDao这个类,其中的增删改查 ...
- ML平台_小米深度学习平台的架构与实践
(转载:http://www.36dsj.com/archives/85383)机器学习与人工智能,相信大家已经耳熟能详,随着大规模标记数据的积累.神经网络算法的成熟以及高性能通用GPU的推广,深度学 ...
- (转)MyBatis框架的学习(二)——MyBatis架构与入门
http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...
- Netty学习-IO体系架构系统回顾 & 装饰模式Decorator的具体使用
Netty学习-IO体系架构系统回顾 IO和NIO的学习 NIO - 1.4 开始出的 在网络应用框架中,NIO得到了大量的使用,特别是netty里面 前提:对IO及其了解 对IO的总结和回顾 理解J ...
- JAVA NIO学习笔记1 - 架构简介
最近项目中遇到不少NIO相关知识,之前对这块接触得较少,算是我的一个盲区,打算花点时间学习,简单做一点个人学习总结. 简介 NIO(New IO)是JDK1.4以后推出的全新IO API,相比传统IO ...
- GreenPlum学习之(Share-nothing)架构
当今世界是一个信息化的世界,我们的生活中无论是生活.工作.学习都离不开信息系统的支撑.而信息系统的背后用于保存和处理最终结果的地方就是数据库.因此数据库系统就变得尤为重要,这意味着如果数据库如果面临问 ...
- JavaWeb学习之三层架构实例(二)
引言 这个实例是上一个实例JavaWeb学习 三层架构实例(一)的加强版,实现的是在前端对数据库中student表的 增.删.改.查 操作.关于三层组成云云,这里就不再叙述. 实例 效果图 先来看一下 ...
- go微服务框架go-micro深度学习(一) 整体架构介绍
产品嘴里的一个小项目,从立项到开发上线,随着时间和需求的不断激增,会越来越复杂,变成一个大项目,如果前期项目架构没设计的不好,代码会越来越臃肿,难以维护,后期的每次产品迭代上线都会牵一发而动全身.项目 ...
- Dubbo学习(六) dubbo 架构图 以及调用过程
一.Dubbo结构图 duubo结构图 我们解释以下这个架构图:Consumer服务消费者,Provider服务提供者.Container服务容器.消费当然是invoke提供者了,invoke这条 ...
随机推荐
- MongoDB使用汇总贴
金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉.应用mongodb(NoSQL)开发,首先要打破原先的关系思维.范式思维. 本文作为使用mongodb一路 ...
- hibernate注解——@Temporal
@Temporal(TemporalType.TIMESTAMP) @Column(name="createTime",nullable=false) private Date c ...
- mac版 android破解软件下载安装
1 apktool下载安装 下载地址https://code.google.com/p/android-apktool/ [1].下载apktool.jar — 解压 [2].下载Mac上的辅助工具a ...
- 【英文版本】Android开源项目分类汇总
Action Bars ActionBarSherlock Extended ActionBar FadingActionBar GlassActionBar v7 appcompat library ...
- Consul 启动命令
服务端: nohup consul agent -server -bootstrap-expect 1 -config-dir /etc/consul.d/ -data-dir /var/opt/co ...
- C# 多线程,论多核时代爱恨情仇
为什么要学习多线程? 2010年1月21日是10年某市公务员考试的报名截止日.因从下午2点开始,用于报名的北京市人事考试网瘫痪,原定于昨天下午5点截止的报名时间延迟至今天上午11点. 2011年3月1 ...
- iNeedle产品介绍
一.产品简介 1.产品背景 1.您曾经遇到过下面的问题和烦恼吗?2.当网站上线以后,如何实时的了解网站的运行状况?3.当网站访问速度慢,是升级服务器?还是升级带宽?还是优化网站代码?4.当网站新上线一 ...
- linux运行级别[转自网络]
运行级别就是操作系统当前正在运行的功能级别.级别是从0到6,具有不同的功能.这些级别定义在/ect/inittab文件中.这个文件是init 程序寻找的主要文件,最先运行的服务是那些放在/etc/rc ...
- [To be translated] Nova:libvirt image 的生命周期
翻译自:http://www.pixelbeat.org/docs/openstack_libvirt_images/ The main stages of a Virtual Machine dis ...
- [转]C#面试题
本文转自http://www.cnblogs.com/lhws/archive/2010/09/21/1827115.html 1.维护数据库的完整性.一致性.你喜欢用触发器还是自写业务逻辑?为什么? ...