storm事务】的更多相关文章

1. storm 事务 对于容错机制,Storm通过一个系统级别的组件acker,结合xor校验机制判断一个msg是否发送成功,进而spout可以重发该msg,保证一个msg在出错的情况下至少被重发一次.但是在一些事务性要求比较高的场景中,需要保障一次只有一次的语义,比如需要精确统计tuple的数量等等,torm0.7.0实现了一个新特性---事务性拓扑,这一特性使消息在语义上确保你可以安全的方式重发消息,并保证它们只会被处理一次.在不支持事务性拓扑的情况下,你无法在准确性,可扩展性,以空错性上…
示例代码: package com.lky.topology; import backtype.storm.Config; import backtype.storm.LocalCluster; import backtype.storm.LocalDRPC; import backtype.storm.coordination.BatchOutputCollector; import backtype.storm.drpc.LinearDRPCTopologyBuilder; import b…
  ITransactionalSpout 基本事务Topology的Spout接口,内含两部分接口:协调Spout接口以及消息发送Blot接口. TransactionalSpoutBatchExecutor Bolt类型,用于执行ITransactionalSpout中的消息发送Bolt节点. TransactionalSpoutCoordinator Spout类型,用于执行ITransactionalSpout中的协调Spout节点,是系统中唯一的Spout节点,具体功能为初始化事务以及…
1.Storm全面.系统.深入讲解,采用最新的稳定版本Storm 0.9.0.1 :   2.注重实践,对较抽象难懂的技术点如Grouping策略.并发度及线程安全.批处理事务.DRPC.Storm Trident均结合企业场景开发案例进行讲解,  让学员觉得简单易懂:   3.分享积累的经验和技巧,从架构的角度剖析场景和设计实现方案:   4.讲师Cloudy具有丰富的电商云平台架构经验,对流计算更是涉足早.沉淀深,课程依然沿用重实践.重实战的风格.     学习课程需要具有: Java基础.…
转载请注明出处:http://blog.csdn.net/lonelytrooper/article/details/12434915 第八章 事务性Topologies 在Storm中,正如本书前边提到的,你可以通过使用ack和fail策略来确保消息处理.但是如果元组被重放了会发生什么?你怎样确保你不会计数过多? 事务性Topologies是包含在Storm0.7.0版本中的新特性,它激活消息语义来确保你以一种安全的方式重放元组并且它们只会被处理一次.没有事务性topologies的支持,你不…
Storm是一个分布式的流处理系统,利用anchor和ack机制保证所有tuple都被成功处理.如果tuple出错,则可以被重传,但是如何保证出错的tuple只被处理一次呢?Storm提供了一套事务性组件Transaction Topology,用来解决这个问题. Transactional Topology目前已经不再维护,由Trident来实现事务性topology,但是原理相同. 5.1一致性事务的设计 Storm如何实现即对tuple并行处理,又保证事务性.本节从简单的事务性实现方法入手…
在Storm中分区事务的处理,Spout端需要实现IPartitionedTransactionalSpout接口,用于对批次及偏移量的控制,而Bolt都必须实现IBatchBolt接口,通常继承至BaseTransactionalBolt抽象类.   API详解 Spout端 IPartitionedTransactionalSpout接口 1   && ifbatch){ 52              System.err.println("TestTransactionB…
功能:将多个tuple组合成为一个批次,并保障每个批次的tuple被且仅被处理一次. storm事务处理中,把一个批次的tuple的处理分为两个阶段processing和commit阶段. processing阶段运行多个批次的tuple并行处理. commit阶段各批次之间需强制按照顺序进行提交.   事务Topologies 在Transactional Topologies内部主要管理以下事情: 管理状态: 把所有实现Transactional Topologies所必须的状态保存在zoo…
前言 为了保证tuple的强有序和exactly-once语义,storm提供了事务机制,为每个tuple提供一个id 设计方法1 为每个tuple设置一个事务id,在数据库保存事务id和当前处理的id做比较. 1.两个id不一样,由于事务的强有序特点,判断出该tuple没有出现过,所以更新id 2.id一样,重复出现,可以不用处理 问题: 这样做会导致新能很低,每个tuple都必须处理完后才能处理下一个tuple(否则会影响和下一个tuple的顺序),并且每个tuple还得至少访问一次数据库…
不多说,直接上干货! 事务 这里的事务是专门针对Topology提出来的,是为了解决元组在处理失败重新发送后的一系列问题的.简而言之,事务拓扑(transactional topology)就是指Storm以并行和顺序处理混合的方式处理元组,一方面是处理消息,将消息分为一批批,并行处理同一批内的消息以及批与批之间的消息:另一方面是提交消息,按严格的顺序提交,总之实现对消息精确的处理. (1)事务拓扑的特点 事务性拓扑这一特性使消息在语义上确保能够以安全的方式重发消息,并保证它们只被处理一次.在不…
普通事务API详解 1   _curtxid:" + _curtxid 46                      + ",_tx.getTransactionId():" + _tx.getTransactionId()); 47          } 48    49          System.out.println("total==========================:" + _result); 50      } 51   …
不透明分区事务不区分发新消息还是旧消息,全部用emitPartitionBatch搞定,虽然 emitPartitionBatch返回的X应该是下一批次供自己使用(emitPartitionBatch的第四个参数), 但是只有一个批次成功以后X才会更新到Zookeeper中,如果失败重发,emitPartitionBatch读取 的X还是旧的.所以这时候自定义的X不需要记录当前批次的开始位置和下一批次的开始位置两个值, 只需要记录下一批次开始位置一个值即可.eg: public class Ba…
作者:Jack47 PS:如果喜欢我写的文章,欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文主要翻译自Storm官方文档Guaranteeing message processing,但我觉得官方文档写的有些随意,啰嗦,所以做了一些修改,里面的配图自己重新画了,能够更加贴切的表达意思. 内容简介 Storm可以保证从Spout发出的每个消息都能被完全处理.Storm的可靠性机制是完全分布式的(distributed),可伸缩的(scalable),容错的…
Storm介绍 Storm是由Twitter开源的分布式.高容错的实时处理系统,它的出现令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求.Storm常用于在实时分析.在线机器学习.持续计算.分布式远程调用和ETL等领域. 在Storm的集群里面有两种节点:控制节点(Master Node)和工作节点(Worker Node).控制节点上面运行一个名为Nimbus的进程,它用于资源分配和状态监控:每个工作节点上面运行一个Supervisor的进程,它会监听分配给它所在机器的…
概要:在使用storm分布式计算框架进行数据处理时,如何保证进入storm的消息的一定会被处理,且不会被重复处理.这个时候仅仅开启storm的ack机制并不能解决上述问题.那么该如何设计出一个好的方案来解决上述问题? 现有架构背景:本人所在项目组的实时系统负责为XXX的实时产生的交易记录进行处理,根据处理的结果向用户推送不同的信息.实时系统平时接入量每秒1000条,双十一的时候,最大几十万条. 原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6219878…
业务描述: 统计从kafka spout中读取的数据条数,以及写入redis的数据的条数,写入hdfs的数据条数,写入kafaka的数据条数.并且每过5秒将数据按照json文件的形式写入日志.其中保存为json数据的格式为:时间戳 + 进程名称 + 读kafka数据条数 + 写入redis数据条数 + 写入hbase条数 + 写入kafka条数.time_stamp + process_name + from_kafka + to_redis + to_hdfs + to_kafka 给出实现的…
本文翻译自<Getting Started With Storm>译者:吴京润    编辑:郭蕾 方腾飞 本书的译文仅限于学习和研究之用,没有原作者和译者的授权不能用于商业用途. 译者序 Storm入门终于翻译完了.首先感谢并发编程网同意本人在网站上首发本书译文,同时还要感谢并发编程网的各位大牛们的耐心帮助.这是本人翻译的第一本书,其中必有各种不足请诸位读者朋友不吝斧正. 译完此书之后,我已经忘记了是如何知道的Storm这个工具了.本人读过的所有技术书籍大部分都是在地铁上完成的,现在已经成了习…
自己的思考: 1.接收任务到任务的分发和协调   nimbus.supervisor.zookeeper 2.高容错性                            各个组件都是无状态的,状态要自己去处理 3.消息                                 消息在流式框架的作用和可靠性处理,消息可靠处理的原理 4.事务消息                            1.finishbatch    2.commit的强顺序性   3.事务性spout分为…
并行度 在Storm集群中真正运行Topology的主要有三个实体:worker.executor.task,下图是可以表示他们之间的关系. 数据流模型 对于一个Spout或Bolt,都会有多个task线程来运行,那么如何在两个组件(Spout和Bolt)之间发送tuple元组呢?Storm提供了若干种数据流分发(Stream Grouping)策略用来解决这一问题。在Topology定义时,需要为每个Bolt指定接收什么样的Stream作为其输入(注:Spout并不需要接收Stream,只会发…
Storm 实战:构建大数据实时计算(阿里巴巴集团技术丛书,大数据丛书.大型互联网公司大数据实时处理干货分享!来自淘宝一线技术团队的丰富实践,快速掌握Storm技术精髓!) 阿里巴巴集团数据平台事业部商家数据业务部 编著 ISBN 978-7-121-22649-6 2014年8月出版 定价:59.00元 184页 16开 编辑推荐 Storm以其简单.灵活.健壮而著称.随着大数据实时处理需求的强劲增长,Storm的出现填补了大数据处理生态系统的缺失,并被越来越多的公司所采用. <Storm实战…
前言spark与hadoop的比较我就不多说了,除了对硬件的要求稍高,spark应该是完胜hadoop(Map/Reduce)的.storm与spark都可以用于流计算,但storm对应的场景是毫秒级的统计与计算,而spark(stream)对应的是秒级的.这是主要的差别.一般很少有对实时要求那么高的场景(哪怕是在电信领域),如果统计与计算的周期是秒级的话,spark的性能是要优于storm的. Storm风暴和Spark Streaming火花流都是分布式流处理的开源框架.这里将它们进行比较并…
本文导读: Component全家谱结构图 Spout分析 ——类图 ——分析(接口实现).结论 ——可靠的与不可靠的消息(推荐) Bolt分析  ——类图 ——分析(接口实现).结论 ——可靠的与不可靠的Bolt(推荐)     Component: Storm中,Spout和Bolt都是其Component,所以,Storm定义了一个名叫IComponent的总接口. 其全家谱结构图如下:  绿色部分是我们最常用.比较简单的部分.红色部分是与事务相关的,在以后的文章会具体讲解.   Base…
本文导读: 1.What——JStorm是什么? 1.1 概述 .2优点 .3应用场景 .4JStorm架构 2.Why——为什么启动JStorm项目?(与storm的区别) .1storm的现状.缺陷 .2JStorm比Storm更稳定,功能更强大,更快!—— 表现 2.2.1稳定性好的表现 2.2.2调度强大的表现 2.2.3性能更好的表现 .3性能提升的原因所在 .4JStorm的其它优点 .5与flume.S4.AKKA.Spark的比较 3.JStorm的性能优化点 4.JStorm的…
[原]storm源码之storm代码结构[译]  说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Sto…
事务拓扑是怎么回事? Storm guarantees that every message will be played through the topology at least once. Storm has a feature called transactional topologies that let you achieve exactly-once messaging semantics for most computations. 事务拓扑,保证流入拓扑的数据能够被完整的处理且…
简介: Storm是一个免费开源.分布式.高容错的实时计算系统.它与其他大数据解决方案的不同之处在于它的处理方式.Hadoop 在本质上是一个批处理系统,数据被引入 Hadoop 文件系统 (HDFS) 并分发到各个节点进行处理.当处理完成时,结果数据返回到 HDFS 供始发者使用.Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据.但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂.Storm就是为了弥补Hadoop的实时性为目标而被创造出来.Sto…
说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Storm的所有接口都是Java语言来定义的.因此,尽管…
对比点 Storm Spark Streaming 实时计算模型 纯实时,来一条数据,处理一条数据 准实时,对一个时间段内的数据收集起来,作为一个RDD,再处理 实时计算延迟度 毫秒级 秒级 吞吐量 低 高 事务机制 支持完善 支持,但不够完善 健壮性 / 容错性 ZooKeeper,Acker,非常强 Checkpoint,WAL,一般 动态调整并行度 支持 不支持  Spark Streaming与Storm的应用场景 对于Storm来说:1.建议在那种需要纯实时,不能忍受1秒以上延迟的场景…
推荐慕课网视频:http://www.imooc.com/video/10055 ====Storm的起源. Storm是开源的.分布式.流式计算系统 什么是分布式呢?就是将一个任务拆解给多个计算机去执行,让许多机器共通完成同一个任务, 把这个多机的细节给屏蔽,对外提供同一个接口.同一个服务,这样的系统就是分布式系统. 在多年以前并没有非常范用的分布式系统,即使存在,也都是限定在指定的领域, 当然,也有人尝试从中提取出共通的部分,发明一个通用的分布式系统,但是都没有很好的结果. 后来,Googl…
http://www.cnblogs.com/lujinhong2/p/4686512.html http://blog.csdn.net/paul_wei2008/article/details/20830329 http://shiyanjun.cn/archives/1472.html 一.topology拓扑图 Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作:(1)Worker(进程)(2)Executor(线程)(3)Task 1个w…