storm实时分析——示例1

Spout:

  • spout对象必须是继承Serializable, 因此要求spout内所有数据结构必须是可序列化的
  • spout可以有构造函数,但构造函数只执行一次,是在提交任务时,创建spout对象,因此在task分配到具体worker之前的初始化工作可以在此处完成,一旦完成,初始化的内容将携带到每一个task内(因为提交任务时将spout序列化到文件中去,在worker起来时再将spout从文件中反序列化出来)。
  • open是当task起来后执行的初始化动作
  • close是当task被shutdown后执行的动作
  • activate 是当task被激活时,触发的动作
  • deactivate 是task被deactive时,触发的动作
  • nextTuple 是spout实现核心, nextuple完成自己的逻辑,即每一次取消息后,用collector 将消息emit出去。
  • ack, 当spout收到一条ack消息时,触发的动作,详情可以参考 ack机制
  • fail, 当spout收到一条fail消息时,触发的动作,详情可以参考 ack机制
  • declareOutputFields, 定义spout发送数据,每个字段的含义
  • getComponentConfiguration 获取本spout的component 配置

Bolt:

  • bolt对象必须是继承Serializable, 因此要求spout内所有数据结构必须是可序列化的
  • bolt可以有构造函数,但构造函数只执行一次,是在提交任务时,创建bolt对象,因此在task分配到具体worker之前的初始化工作可以在此处完成,一旦完成,初始化的内容将携带到每一个task内(因为提交任务时将bolt序列化到文件中去,在worker起来时再将bolt从文件中反序列化出来)。
  • prepare是当task起来后执行的初始化动作
  • cleanup是当task被shutdown后执行的动作
  • execute是bolt实现核心, 完成自己的逻辑,即接受每一次取消息后,处理完,有可能用collector 将产生的新消息emit出去。 ** 在executor中,当程序处理一条消息时,需要执行collector.ack, 详情可以参考 ack机制 ** 在executor中,当程序无法处理一条消息时或出错时,需要执行collector.fail ,详情可以参考 ack机制
  • declareOutputFields, 定义bolt发送数据,每个字段的含义
  • getComponentConfiguration 获取本bolt的component 配置
时间: 2025-01-01 11:21:39

storm实时分析——示例1的相关文章

storm实时分析-示例2

一个更复杂的例子 上面的DRPC例子只是为了介绍DRPC概念的一个简单的例子.下面让我们看一个复杂的.确实需要storm的并行计算能力的例子, 这个例子计算twitter上面一个url的reach值. 首先介绍一下什么是reach值,要计算一个URL的reach值,我们需要: 获取所有微薄里面包含这个URL的人 获取这些人的粉丝 把这些粉丝去重 获取这些去重之后的粉丝个数 — 这就是reach 一个简单的reach计算可能会有成千上万个数据库调用,并且可能设计到百万数量级的微薄用户.这个确实可以

storm trident 示例

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

Storm Trident示例partitionBy

如下代码使用partitionBy做repartition, partitionBy即根据相应字段的值按一定算法,把tuple分配到目标partition当中(Target Partition = hash(fields) % (number of target partition)), 相同值会被分配到同一个partition当中,由于不同值有可能出现相同的hash, 根据上面的算法,不同的值,也可能分配到同一个partition中. 省略部分代码,省略部分可参考:https://blog.c

Storm Trident示例function, filter, projection

以下代码演示function, filter, projection的使用,可结合注释 省略部分代码,省略部分可参考:https://blog.csdn.net/nickta/article/details/79666918 FixedBatchSpout spout = new FixedBatchSpout(new Fields("user", "score"), 3, new Values("nickt1", 4), new Values(

Storm Trident示例Aggregator

Aggregator首先在输入流上运行全局重新分区操作(global)将同一批次的所有分区合并到一个分区中,然后在每个批次上运行的聚合功能,针对Batch操作.与ReduceAggregator很相似. 省略部分代码,省略部分可参考:https://blog.csdn.net/nickta/article/details/79666918 static class State { int count = 0; } FixedBatchSpout spout = new FixedBatchSpo

【JAVA版】Storm程序整合Kafka、Mongodb示例及部署

一.环境 一台Centos6.5主机 Mongo 3.0 Kafka_2.11-0.8.2.1 Storm-0.9.5 Zookeeper-3.4.6 java 1.7 (后因在mac上打包的jar由1.8编译没法儿运行,改为java 1.8) 其余环境暂略 二.运行启动 启动zookeeper 确认配置正确,配置相关可自行搜索. [[email protected] zookeeper-3.4.6]#pwd /data0/xxx/zookeeper-3.4.6 [[email protecte

Apache Storm 1.1.0 中文文档 | ApacheCN

前言  Apache Storm 是一个免费的,开源的,分布式的实时计算系统. 官方文档: http://storm.apache.org 中文文档: http://storm.apachecn.org ApacheCN 最近组织了翻译 Storm 1.1.0 中文文档 的活动,整体 翻译进度 为 96%. 感谢大家参与到该活动中来 感谢无私奉献的 贡献者,才有了这份 Storm 1.1.0 中文文档 感谢一路有你的陪伴,我们才可以做的更好,走的更快,走的更远,我们一直在努力 ... 网页地址:

实时分析之客户画像项目实践

客户画像的背景描写叙述 原来的互联网,以解决用户需求为目的.衍生出众多的网联网产品,以及产生呈数量级递增的海量数据.当用户需求基本得到满足的时候,须要分析这些海量的数据.得以达到最高效的需求实现,最智能的功能服务.以及最精准的产品推荐,最后提升产品的竞争力.简言之,产品由原来的需求驱动转换成数据驱动. 客户画像就是数据驱动的代表作之中的一个.详细点讲,客户画像就是用户的标签(使用该产品的群体),程序能自己主动调整.组合.生成这些标签,最后再通过这些标签.达到精准营销的目的. 当前流行的实时分析框

轻松用Storm进行实时大数据分析【翻译】

原文地址 简单易用,Storm让大数据分析变得轻而易举. 如今,公司在日常运作中经常会产生TB(terabytes)级的数据.数据来源包括从网络传感器捕获的,到Web,社交媒体,交易型业务数据,以及其他业务环境中创建的数据.考虑到数据的生成量,实时计算(real-time computation )已成为很多组织面临的一个巨大挑战.我们已经有效地使用了一个可扩展的实时计算系统--开源的 Storm 工具,它是有 Twitter 开发,通常被称为"实时 Hadoop(real-time Hadoo