storm trident State

State 是用来 管理 从数据存储中 查询数据(使用batch中的tuple作为输入来查询) 插入和更新数据(把batch中的tuple更新或者插入到数据存储)

里面涉及到事务管理

对于,数据存储是kv结构的, 会有专门的MapStates接口

我们要自己定义支持kv的state,只需要实现 IBackingMap接口

如果要自己实现 State

首先Sate实现类里面需要有查询和更新函数

然后需要继承BaseQueryFunction和BaseStateUpdater 模板类,

来专门实现如何根据输入tuple,调用State内部的查询和更新函数,实现数据的查询和更新

需要注意的是,trident是一个batch一个batch地对数据存储进行操作的,可以减少网络交互

原文地址:https://www.cnblogs.com/brainstorm/p/8948321.html

时间: 2024-11-08 22:41:58

storm trident State的相关文章

Apache Storm 官方文档 —— Trident State

转载自并发编程网 – ifeve.com本文链接地址: Apache Storm 官方文档 -- Trident State Trident 中含有对状态化(stateful)的数据源进行读取和写入操作的一级抽象封装工具.这个所谓的状态(state)既可以保存在拓扑内部(保存在内存中并通过 HDFS 来实现备份),也可以存入像 Memcached 或者 Cassandra 这样的外部数据库中.而对于 Trident API 而言,这两种机制并没有任何区别. Trident 使用一种容错性的方式实

Storm专题二:Storm Trident API 使用详解

一.概述 Storm Trident中的核心数据模型就是"Stream",也就是说,Storm Trident处理的是Stream,但是实际上Stream是被成批处理的,Stream被切分成一个个的Batch分布到集群中,所有应用在Stream上的函数最终会应用到每个节点的Batch中,实现并行计算,具体如下图所示: 在Trident中有五种操作类型: Apply Locally:本地操作,所有操作应用在本地节点数据上,不会产生网络传输 Repartitioning:数据流重定向,单纯

storm trident 示例

Storm Trident的核心数据模型是一批一批被处理的“流”,“流”在集群的分区在集群的节点上,对“流”的操作也是并行的在每个分区上进行. Trident有五种对“流”的操作: 1.      不需要网络传输的本地批次运算 2.      需要网络传输的“重分布”操作,不改变数据的内容 3.      聚合操作,网络传输是该操作的一部分 4.      “流”分组(grouby)操作 5.      合并和关联操作 批次本地操作: 批次本地操作不需要网络传输,本格分区(partion)的运算

storm trident function函数

package cn.crxy.trident; import java.util.List; import backtype.storm.Config; import backtype.storm.LocalCluster; import backtype.storm.generated.StormTopology; import backtype.storm.tuple.Fields; import backtype.storm.tuple.Values; import storm.trid

storm trident merger

import java.util.List; import backtype.storm.Config; import backtype.storm.LocalCluster; import backtype.storm.generated.StormTopology; import backtype.storm.tuple.Fields; import backtype.storm.tuple.Values; import storm.trident.Stream; import storm.

storm trident 事务和 spout和state有关

首先spout有三种:这些关系到相同的batchid里面是否包含相同的tuple 事务性:相同 模糊事务性:如果取不到原来的,则拿新的 无事务:不一定 所以只有事务性才能做到一个tuple唯一一次处理 模糊事务性 才能做到 最多处理一次 而无事务,则可能处理多次 -------- 而在State这里, 它会提供两个方法基类方法: beginCommit(Long txid) commit(Long txid) 来完成事务性操作 如果真正要完成事务型操作,需要写txid或者preval到数据库里,

[翻译][Trident] Storm Trident 详细介绍

1.Trident对storm提供了什么能力?2.Trident在如何最大程度的保证执行topogloy性能方面是非常智能的?3.storm如何保证每个消息都被处理一次? Trident是在storm基础上,一个以realtime 计算为目标的高度抽象. 它在提供处理大吞吐量数据能力的同时,也提供了低延时分布式查询和有状态流式处理的能力. 如果你对Pig和Cascading这种高级批量处理工具很了解的话,那么应该毕竟容易理解Trident,因为他们之间很多的概念和思想都是类似的.Tident提供

[翻译][Trident] Storm Trident 教程

英文原址:https://github.com/nathanmarz/storm/wiki/Trident-tutorial ---------------- Trident是在storm基础上,一个以realtime 计算为目标的高度抽象. 它在提供处理大吞吐量数据能力的同时,也提供了低延时分布式查询和有状态流式处理的能力. 如果你对Pig和Cascading这种高级批量处理工具很了解的话,那么应该毕竟容易理解Trident,因为他们之间很多的概念和思想都是类似的.Tident提供了 join

Storm Trident 详细介绍

一.概要 1.1 Storm(简介) Storm是一个实时的可靠地分布式流计算框架. 具体就不多说了,举个例子,它的一个典型的大数据实时计算应用场景:从Kafka消息队列读取消息(可以是logs,clicks,sensor data):通过Storm对消息进行计算聚合等预处理:把处理结果持久化到NoSQL数据库或者HDFS做进一步深入分析. 1.2 Trident(简介) Trident是对Storm的更高一层的抽象,除了提供一套简单易用的流数据处理API之外,它以batch(一组tuples)