storm的acker机制】的更多相关文章

一.简介:       storm中有一个很重要的特性: 保证发出的每个tuple都会被完整处理.一个tuple被完全处理的意思是: 这个tuple以及由这个tuple所产生的所有的子tuple都被成功处理.           如果任一个消息在timeout所指定的时间内没有完成处理,那这个tuple就失败了. 二.原理:              acker并不会为每个tuple都分配内存空间来完成跟踪,而是利用了一个非常巧妙的算法,这个算法只需使用恒定的20字节就可以完成整个tuple树的…
转载请注明原创地址http://www.cnblogs.com/dongxiao-yang/p/6142356.html Storm 的拓扑有一些特殊的称为"acker"的任务,这些任务负责跟踪每个 Spout 发出的 tuple 的 DAG.开启storm tracker机制的前提有三个: 1. 在spout emit tuple的时候,要加上第3个参数messageid 2. 在配置中acker数目至少为1 3. 在bolt emit的时候,要加上第二个参数anchor tuple…
一.简介: storm中有一个很重要的特性: 保证发出的每个tuple都会被完整处理.一个tuple被完全处理的意思是: 这个tuple以及由这个tuple所产生的所有的子tuple都被成功处理.如果任一个消息在timeout所指定的时间内没有完成处理,那这个tuple就失败了. 二.原理: acker并不会为每个tuple都分配内存空间来完成跟踪,而是利用了一个非常巧妙的算法,这个算法只需使用恒定的20字节就可以完成整个tuple树的跟踪. 具体原理: acker对于每个spout-tuple…
Storm的acker消息确认机制... ack/fail消息确认机制(确保一个tuple被完全处理) 在spout中发射tuple的时候需要同时发送messageid,这样才相当于开启了消息确认机制 如果你的topology里面的tuple比较多的话, 那么把acker的数量设置多一点,效率会高一点. 通过config.setNumAckers(num)来设置一个topology里面的acker的数量,默认值是1. 注意: acker用了特殊的算法,使得对于追踪每个spout tuple的状态…
正在学习storm的大兄弟们,我又来传道授业解惑了,是不是觉得自己会用ack了.好吧,那就让我开始啪啪打你们脸吧. 先说一下ACK机制: 为了保证数据能正确的被处理, 对于spout产生的每一个tuple, storm都会进行跟踪. 这里面涉及到ack/fail的处理,如果一个tuple处理成功是指这个Tuple以及这个Tuple产生的所有Tuple都被成功处理, 会调用spout的ack方法: 如果失败是指这个Tuple或这个Tuple产生的所有Tuple中的某一个tuple处理失败, 则会调…
Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理保障机制) 消息的"完整性处理" 在消息得到完整性处理后或处理失败后会发生什么 Storm 的可靠性 API 在 tuple 可以被重新处理的前提下,如何使应用正确运行 Storm 是以怎样以高效的方式实现可靠性 调整可靠性 Daemon Fault Tolerance(守护线程容错机制)…
一.Storm的数据分发策略 1. Shuffle Grouping 随机分组,随机派发stream里面的tuple,保证每个bolt task接收到的tuple数目大致相同. 轮询,平均分配 2. Fields Grouping 按字段分组,比如,按"user-id"这个字段来分组,那么具有同样"user-id"的 tuple 会被分到相同的Bolt里的一个task, 而不同的"user-id"则可能会被分配到不同的task. 3. All G…
storm消息容错机制(ack-fail) 1.介绍 在storm中,可靠的信息处理机制是从spout开始的. 一个提供了可靠的处理机制的spout需要记录他发射出去的tuple,当下游bolt处理tuple或者子tuple失败时spout能够重新发射. Storm通过调用Spout的nextTuple()发送一个tuple.为实现可靠的消息处理,首先要给每个发出的tuple带上唯一的ID,并且将ID作为参数传递给SpoutOutputCollector的emit()方法:collector.e…
storm的并发机制 storm计算支持在多台机器上水平扩容,通过将计算切分为多个独立的tasks在集群上并发执行来实现. 一个task可以简单地理解:在集群某节点上运行的一个spout或者bolt实例. topology的组成部分:Nodes(服务器):配置在一个storm集群中的服务器,会执行topology的一部分运算.一个storm集群可以包括一个或者多个工作node; Workers(JVM虚拟机):一个NOde上相互独立运行的JVM进程.每个Node可以配置运行一个或者多个worke…
前言 为了保证tuple的强有序和exactly-once语义,storm提供了事务机制,为每个tuple提供一个id 设计方法1 为每个tuple设置一个事务id,在数据库保存事务id和当前处理的id做比较. 1.两个id不一样,由于事务的强有序特点,判断出该tuple没有出现过,所以更新id 2.id一样,重复出现,可以不用处理 问题: 这样做会导致新能很低,每个tuple都必须处理完后才能处理下一个tuple(否则会影响和下一个tuple的顺序),并且每个tuple还得至少访问一次数据库…