- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Storm 事务性拓扑
Storm 事务性拓扑 事务性拓扑 正如书中之前所提到的,使⽤ Storm 编程,可以通过调⽤ ack 和 fail ⽅法来确保⼀条 消息的处 成功或失败。不过当元组被重发时,会发⽣什么呢?你又该如何砍不会重 复计算? Storm0 .7 .0 实现了⼀个新特性——事务性拓扑,这⼀特性使消息在语义上确保你可以 安全的⽅式重发消息,并保证它们只会被处 ⼀次。在不⽀持事务性拓扑的情况下, 你⽆法在准确性,可扩展性,以空错性上得到保证的前提下完成计算。 NOTE:事务性拓扑是⼀个构建于标准 Storm spout 和 bolt 之上的抽象概念。 设计 在事务性拓扑中,Storm 以并⾏和顺序处 混合的⽅式处 元组。spout 并⾏分批创建 供 bolt 处 的元组 (译者注:下⽂将这种分批创建、分批处 的元组称做批次)。其 中⼀些 bolt 作为提交者以严格有序的⽅式提交处 过的批次。这意味着如果你有每批 五个元组的两个批次,将有两个元组被 bolt 并⾏处 ,但是直到提交者成功提交了第 ⼀个元组之后,才会提交第⼆个元组。 NOTE : 使⽤事务性拓扑时,数据源要能够重发批次,有时候甚⾄要重复多次。因此 确认你的数据源——你连接到的那个 spout ——具备这个能⼒。 这个过程可以被描述 为两个阶段: 处 阶段 纯并⾏阶段,许多批次同时处 。 提交阶段 严格有序阶段, 直到批次⼀成功提交之后,才会提交批次⼆。 这两个阶段合起来称为⼀个 Storm 事 务。 NOTE : Storm 使⽤ zookeeper 储存事务元数据,默认情况下就是拓扑使⽤的那 个 zookeeper 。你可以修改以下两个配置参数键指定其它的 zookeeper —— transactional .zookeeper .servers 和transactional .zookeeper .port 。 事务实践 下⾯我们要创建⼀个 Twitter 分析⼯具来了解事务的⼯作⽅式。我们从⼀个 Redis 数据 库读取tweets ,通过⼏个 bolt 处 它们,最后把结果保存在另⼀个 Redis 数据库的列 表中。处 结果就是所有话题和它们的在 tweets 中出现的次数列表,所有⽤户和他们 在 tweets 中出现的次数列表,还有⼀个包含发起话题和频率的⽤户列表。 这个⼯具的 拓扑图。 图 拓扑概览 正如你看到的,TweetsTransactionalSpout 会连接你的 tweet 数据库并向拓扑分发批 次。UserSplitterBolt 和 HashTagSplitterBolt 两个 bolt ,从 spout 接收元组。 UserSplitterBolt 解析 tweets 并查找⽤户——以 开头的单词——然后把这些单词分发 到名为 users 的⾃定义数据流组。HashtagSplitterBolt 从 tweet 查找 # 开头的单词,并 把它们分发到名为 hashtags 的⾃定义数据流组。第三个 bolt ,UserHashtagJoinBolt , 接收前⾯提到的两个数据流组,并计算具名⽤户的⼀条 tweet 内的话题数量。为了计 数并分发计算结果,这是个 BaseBatchBolt (稍后有更多介绍)。 最后⼀个 bolt ——RedisCommitterBolt —— 接收以上三个 bolt 的数据流组。它为每样 东西计数,并在对⼀个批次完成处 时,把所有结果保存到 redis 。这是⼀种特殊的 bolt ,叫做提交者,在本章后⾯做更多讲解。 ⽤ TransactionalTopologyBuilder 构建拓扑,代码如下: 01 TransactionalTopologyBuilder builder= 02 new TransactionalTopologyBuilder(test, spout, new TweetsT 03 0 builder.setBolt(users-splitter, new UserSplitterBolt(), ).shuf 05 buildeer.setBolt(hashtag-splitter, new HashtagSplitterBolt(), 06 07 builder.setBolt(users-hashtag-manager, new UserHashtagJoinBolt( 08 .fieldsGrouping(users
您可能关注的文档
最近下载
- 租山地合同范本.docx VIP
- 内燃机 气门弹簧 产品质量分等分级规范.pdf VIP
- 继承和弘扬伟大抗战精神今年是中国人民抗日战争暨世界反法西斯战争胜利80周年.pptx VIP
- 新2025年推普周班会.ppt
- 2025山东枣庄市口腔医院合同制专业技术人员招聘23人笔试备考试题及答案解析.docx VIP
- 2025山东枣庄市口腔医院合同制专业技术人员招聘23人笔试参考题库附答案解析.docx VIP
- 福建省福州华伦中学2023-2024学年九年级上学期月考数学试题.pdf VIP
- 精通版5年级上册英语全册教学课件(2021年秋修订).pptx
- DCS在电厂热工控制系统中的应用与管理维护.docx VIP
- 设计符号学提喻.ppt VIP
文档评论(0)