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我们可以使用一下代码完成上述操作:
在这里插入图片描述

二、TridentTopology与StormToplogy

(1)区别
StormToplogy:
在这里插入图片描述
TridentTopology
在这里插入图片描述
(2)联系
在这里插入图片描述
spout的消息流涉及到的核心类
在这里插入图片描述

三、TridentTopology的可靠性机制详解

在这里插入图片描述

四、Storm Trident API讲解

在这里插入图片描述


以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!

猜你喜欢

转载自blog.csdn.net/weixin_45366499/article/details/112008176