Storm中Trident框架详解

简介: 笔记

一、Storm Trident概述及特性


Trident是在storm基础上,一个以realtime 计算为目标的高度抽象。 它在提供处理大吞吐量数据能力的同时,也提供了低延时分布式查询和有状态流式处理的能力。好比 Mapreduce框架的Pig,Trident是Storm提供的基于基本API开发的高级框架。Trident提供了 joins, aggregations, grouping, functions, 以及 filters等能力。


除此之外,Trident 还提供了一些专门的原语,从而在基于数据库或者其他存储的前提下来应付有状态的递增式 处理。


Trident是完全容错的,拥有有且只有一次处理的语义,其实就是transactional的高级封装。这就让你可以很轻松 的使用Trident来进行实时数据处理。Trident会把状态以某种形式保持起来,当有错误发生时,它会根据需要来恢复 这些状态。


Trident封装了transactional事务类,所以我们不再需要学习Batch相关的基础API了,减轻了学习成本。


trident每次处理消息均以batch为单位,即一次处理多个元组


trident是storm的更高层次抽象,主要提供了3个方面的好处:


(1)常用的count,sum等封装成了方法,可以直接调用不需要自己实现。

(2)提供一次原语,如groupby等。

(3)提供事务支持,可以保证数据均处理且只处理了一次(恰好一次)

如果我们开发一个对文本中的词频进行统计的程序,使用Storm框架的话我们需要开发三个Storm组件:


1.一个Spout负责收集文本信息并分段,做为sentence字段发送给下游的Bolt

2.一个Bolt将每段文本分词,将分词结果以word字段发送给下游的Bolt

3.一个Bolt对词频进行统计,把统计结果记录在count字段并存储

如果使用Trident我们可以使用一下代码完成上述操作:

5.png


二、TridentTopology与StormToplogy


(1)区别

StormToplogy:6.png

TridentTopology

7.png

(2)联系

8.png

spout的消息流涉及到的核心类

9.png


三、TridentTopology的可靠性机制详解


10.png


四、Storm Trident API讲解


11.png


相关文章
|
调度 流计算
105 Storm核心组件
105 Storm核心组件
25 0
|
消息中间件 存储 并行计算
|
存储 SQL 运维
storm笔记:Trident应用
Trident是基于Storm的实时计算模型的高级抽象。它可以实现高吞吐(每秒数百万条消息)的有状态流处理和低延迟分布式查询。
195 0
storm笔记:Trident应用
|
存储 消息中间件 缓存
storm笔记:Trident状态
在storm笔记:Trident应用中说了下Trident的使用,这里说下Trident几种状态的变化及其对应API的使用。
96 0
storm笔记:Trident状态
|
存储 消息中间件 分布式计算
Storm 简介
场景 伴随着信息科技日新月异的发展,信息呈现出爆发式的膨胀,人们获取信息的途径也更加多样、更加便捷,同时对于信息的时效性要求也越来越高。举个搜索场景中的例子,当一个卖家发布了一条宝贝信息时,他希望的当然是这个宝贝马上就可以被卖家搜索出来、点击、购买啦,相反,如果这个宝贝要等到第二天或者更久才可以被搜出来,估计这个大哥就要骂娘了。再举一个推荐的例子,如果用户昨天在淘宝上买了一双袜子,今天想买一副泳镜去游泳,但是却发现系统在不遗余力地给他推荐袜子、鞋子,根本对他今天寻找泳镜的行为视而不见,估计这哥们心里就会想推荐你妹呀。其实稍微了解点背景知识的码农们都知道,这是因为后台系统做的是每天一次的全量处理
149 0