Storm概念学习系列之storm的特性
不多说,直接上干货!
storm的特性
Storm 是一个开源的分布式实时计算系统,可以简单、可靠地处理大量的数据流。 Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个节点每秒可以处理数以百万计的消息)。 Storm 的部署和运维都很便捷,而且更为重要的是,可以使用任意编程语言来开发应用。
下面介绍 Storm 的特点
(1)编程模型简单
在大数据处理方面, Hadoop 为开发者提供了 MapReduce 原语,使并行批处理程序变得非常简单和优美。同样, Storm 也为大数据的实时计算提供了一些简单优美的原语,这大大降低了开发并行实时处理任务的复杂性,可以快速、高效地开发应用。
(2)可扩展
在 Storm 集群中真正运行 Topology 的主要有 3 个实体:工作进程、线程和任务。 Storm集群中的每台机器都可以运行多个工作进程,每个工作进程又可创建多个线程,每个线程可以执行多个任务,任务是真正进行数据处理的实体,开发的 Spout、 Bolt 就是作为一个或者多个任务的方式执行的。因此,计算任务在多个线程、进程和服务器之间并行进行,支持灵活的水平扩展。
(3)高可靠性
Storm 可以保证 Spout 发出的每条消息都能被“完全处理”,这也是直接区别于其他实时系统的地方,如 S4。
注意:
Spout 发出的消息后续可能会触发产生成千上万条消息,可以形象地理解为一棵消息树,其中 Spout 发出的消息为树根, Storm 会跟踪这棵消息树的处理情况,只有当这棵消息树中的所有消息都被处理了,Storm 才会认为 Spout 发出的这个消息已经被“完全处理”。如果这棵消息树中的任何一个消息处理失败了,或者整棵消息树在限定的时间内没有“完全处理”,那么 Spout 发出的消息就会重发。
考虑到尽可能减少内存的消耗, Storm 并不会跟踪消息树中的每个消息,而是采用了一些特殊的策略,它把消息树当作一个整体来跟踪,对消息树中所有消息的唯一 ID 进行异或计算,通过是否为 0 来判定 Spout 发出的消息是否被“完全处理”,这极大地节约了内存并简化了判定逻辑,后面会详细介绍这种机制。
在这种模式下,每发送一个消息,都会同步发送一个 ack/fail,对于网络的带宽会有一定的消耗,如果对可靠性要求不高,则可使用不同的 emit 接口关闭该模式。
上面所说的, Storm 保证了每个消息至少被处理一次,但是对于有些计算场合,会严格要求每个消息只被处理一次, Storm 的 0.7.0 引入了事务性拓扑,解决了这个问题,后面章节会详述。
(4)高容错性
如果在消息处理过程中出了一些异常, Storm 会重新安排这个出问题的处理单元。 Storm保证一个处理单元永远运行(除非显式杀掉该处理单元)。当然,如果处理单元中存储了中间状态,那么当处理单元重新被 Storm 启动时,需要将自身处理的中间状态恢复。
(5)支持多种编程语言
除了用 Java 实现 Spout 和 Bolt,还可以使用其他编程语言来完成这项工作,这一切得益于 Storm 的多语言协议。多语言协议是 Storm 内部的一种特殊协议,允许 Spout 或 Bolt 使用标准输入和标准输出来传递消息,传递的消息为单行文本或多行 JSON 编码的格式。
Storm 支持多语言编程主要是通过 ShellBolt、 ShellSpout 和 ShellProcess 这些类来实现的,这些类都实现了 IBolt 和 ISpout 接口,以及让 Shell 通过 Java 的 ProcessBuilder 类来执行脚本或者程序的协议。
可以看到,采用这种方式,每个 Tuple 在处理时都需要进行 JSON 的编解码,因此在吞吐量上会有较大影响。
(6)支持本地模式
Storm 有一种“本地模式”,也就是在进程中模拟一个 Storm 集群的所有功能,以本地模式运行 Topology 与在集群上运行 Topology 类似,这对于开发和测试来说非常有用。
(7)高效
用 ZeroMQ 作为底层消息队列,保证消息能被快速处理。
Storm概念学习系列之storm的特性的更多相关文章
- Storm概念学习系列之storm的雪崩
不多说,直接上干货! Storm的雪崩问题的解决办法1: Storm概念学习系列之并行度与如何提高storm的并行度 Storm的雪崩问题的解决办法2:
- Storm概念学习系列之storm流程图
把stream当做一列火车, tuple当做车厢,spout当做始发站,bolt当做是中间站点!!! 见 Storm概念学习系列之Spout数据源 Storm概念学习系列之Topology拓扑 Sto ...
- Storm概念学习系列之storm简介
不多说,直接上干货! storm简介 Storm 是 Twitter 开源的.分布式的.容错的实时计算系统,遵循 Eclipse Public License1.0. Storm 通过简单的 API ...
- Storm概念学习系列之storm的定时任务
不多说,直接上干货! 至于为什么,有storm的定时任务.这个很简单.但是,这个在工作中非常重要! 假设有如下的业务场景 这个spoult源源不断地发送数据,boilt呢会进行处理.然后呢,处理后的结 ...
- Storm概念学习系列之storm的可靠性
这个概念,对于理解storm很有必要. 1.worker进程死掉 worker是真实存在的.可以jps查看. 正是因为有了storm的可靠性,所以storm会重新启动一个新的worker进程. 2.s ...
- Storm概念学习系列之storm核心组件
不多说,直接上干货! Storm核心组件 了解 Storm 的核心组件对于理解 Storm 原理非常重要,下面介绍 Storm 的整体,然后介绍 Storm 的核心. Storm 集群由一个主节点和多 ...
- Storm概念学习系列之storm的功能和三大应用
不多说,直接上干货! storm的功能 Storm 有许多应用领域:实时分析.在线机器学习.持续计算.分布式 RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务). ETL(Extract ...
- Storm概念学习系列之Storm与Hadoop的角色和组件比较
不多说,直接上干货! Storm与Hadoop的角色和组件比较 Storm 集群和 Hadoop 集群表面上看很类似.但是 Hadoop 上运行的是 MapReduce 作业,而在 Storm 上运行 ...
- Storm概念学习系列之storm的设计思想
不多说,直接上干货! storm的设计思想 在 Storm 中也有对流(Stream)的抽象,流是一个不间断的.无界的连续 Tuple(Storm在建模事件流时,把流中的事件抽象为 Tuple 即元组 ...
随机推荐
- Foreman-porxy负载均衡搭建
本文接上篇puppet负载均衡的环境实验. Foreman-proxy可以采用四层或者七层负载,都可以实现,在foreman的web界面添加一个smart-proxy,后端多个真实foreman-pr ...
- UDK编辑器 49条小提示
转自:http://www.cnblogs.com/hmxp8/archive/2012/02/09/2343674.html Very Helpful~ 01. First time using t ...
- VisualGDB系列2:VisualGDB对Linux平台的支持特性
根据VisualGDB官网(https://visualgdb.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指正. 1 复杂问题的直观解决方案 只需要轻点几 ...
- mysql--二进制日志(bin-log)
一.设置二进制日志 进制日志记录了所有的DDL和DML,但不包括各种查询.通过二进制日志,可以实现什么效果呢?二进制日志文件可以[实现灾难数据恢复],另外可以应用到[mysql复制数据同步].二进制日 ...
- LoadRunner 参数模拟——快速得到并发用户的进场规则
LoadRunner 并发时,一般需要进入参数化 用户名或者相关的字段数据,用以满足在并发时无限的接近真实的使用场景: 但当你在设置好参数化的读取规则后,在执行并发场景时,用户并发加载顺序是否确实如你 ...
- [poj3259]Wormholes(spfa判负环)
题意:有向图判负环. 解题关键:spfa算法+hash判负圈. spfa判断负环:若一个点入队次数大于节点数,则存在负环. 两点间如果有最短路,那么每个结点最多经过一次,这条路不超过$n-1$条边. ...
- [hdu1402]A * B Problem Plus(FFT模板题)
解题关键:快速傅里叶变换fft练习. 关于结果多项式长度的确定,首先将短多项式扩展为长多项式,然后扩展为两倍. #include<cstdio> #include<cstring&g ...
- JSP错误页面
exception是JSP九大内置对象之一,其实例代表其他页面的异常和错误.只有当页面是错误处理页面时,即isErroePage为 true时,该对象才可以使用.对于C项,errorPage的实质就是 ...
- 22. Generate Parentheses (recursion algorithm)
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
- 51nod1489(dfs)
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1489 题意:中文题诶- 思路:dfs 首先我们要通过攻击第1 ...