基于storm的Window

Watermark作用

在解释storm的window之前先说明一下watermark原理。

Watermark中文翻译为水位线更为恰当。

顺序的数据从源头开始发送到到操作,中间过程肯定会出现数据乱序情况,比如网络原因,数据并发发送等。如何区分乱序的数据和正常的数据,就引申出了watermark。

Watermark是每一个时间窗口的下限,意思是说当watermark大于了窗口截止时间,那么该窗口就应该被关闭。而watermar也会随着时间窗口的变化不断更新自己。

参考下图,列举了几个关键的术语以及它们的定位。

概述

总体来看,抽象 tuple和watermark为Event,这样可以方便的把watermark注入到tuple。做统一化处理。

有5大组件组成

·WindowBoltExecutor

·WindowManager

·WaterMarkEventGenerator

·Trigger

·Eviction

WindowBoltExecutor负责整个window的初始化,参数配置和封装,

WindowManager负责存取数据,包括所有的数据操作

WaterMarkEventGenerator负责watermark的生成和维护

Trigger负责时间窗口的判断,决定是否触发窗口事件

Eviction负责数据状态的判断,得到数据是哪一种状态(KEEP,STOP,PROCESS,EXPIRED)

Watermark算法

所有流数据不一起处理,而是分开计算各个流最大时间,再根据最大时间集合计算出最小时间,这个时间就是watermark的时间。

这样做的目的是为了防止不同流传输的延迟不同,比方说,有2个上游A,B同时发数据,A由于网络较好,发送的数据比B快,导致了A的时间戳比B的大,如果watermark采用了全局最大值,那么时间窗口就会被提早关闭,而B发来的数据会被排除在该时间窗口

主逻辑流程

重要参数


英文


解释


windowLength


窗口大小


slidingInterval


窗口滑动步长


windowEndTs


窗口截止时间


watermark


水位线,判断是否关闭时间窗口的标志


maxLag


时间窗口的最大延迟时间(网络等问题造成)


eventTimestamp


数据时间,每个数据都有自带的时间戳

数据4种状态


状态


解释


KEEP


当前窗口不处理。是未来窗口的数据


STOP


停止处理,数据时间戳比窗口截止时间+lag还大,说明不属于该窗口,之后的数据也不属于


PROCESS


当前窗口内的数据


EXPIRE

过期数据,需要被移除
当 窗口截止时间 – 数据时间 > 窗口大小
时间: 2024-08-10 14:55:07

基于storm的Window的相关文章

基于storm的在线关联规则

基于storm的在线视频推荐算法,算法依据youtube的推荐算法  算法相对简单,可以认为是关联规则只挖掘频繁二项集.下面给出与storm的结合实现在线实时算法 , 关于storm见这里.首先给出数据流图(不同颜色的线条代表不同的数据流.在storm里面bolt也是可以声明数据流的.) 关联规则挖掘数据项的时候,有事务的概念,这里的事务的定义为:给定时间窗口内用户看过的视频集.所以,我们需要这样一个bolt,根据实时日志收集每个用户看过的视频集----user_videos aggregate

一种基于Storm的可扩展即时数据处理架构思考

问题引入 使用storm可以方便的构建一种集群式的数据框架,并通过定义topo来实现业务逻辑. 但使用topo存在一个缺点, topo的处理能力来自于其启动时设置的worker数目,在很多情况下,我们需要能够根据业务压力来调整集群的处理能力,这时候单一的topo就无法解决这个问题了. 为了能够更加灵活的定义处理能力,可以考虑将原有的topo根据业务域进行拆分,做到互不干扰,灵活控制,而且为了能够更加经济的利用处理资源,可以考虑引入worker资源池的概念,达到对资源的充分利用. 但使用这种多to

基于Storm构建实时热力分布项目实战

详情请交流  QQ  709639943 01.基于Storm构建实时热力分布项目实战 02.以慕课网日志分析为例 进入大数据 Spark SQL 的世界 03.Spring Cloud微服务实战视频课程 04.漫谈spring cloud 与 spring boot 基础架构 05.Java秒杀系统方案优化 高性能高并发实战 06.Java深入微服务原理改造房产销售平台 07.快速上手Linux 玩转典型应用 08.漫谈spring cloud分布式服务架构 09.Java Spring Se

基于Storm的WordCount

Storm WordCount 工作过程 Storm 版本: 1.Spout 从外部数据源中读取数据,随机发送一个元组对象出去: 2.SplitBolt 接收 Spout 中输出的元组对象,将元组中的数据切分成单词,并将切分后的单词发射出去: 3.WordCountBolt 接收 SplitBolt 中输出的单词数组,对里面单词的频率进行累加,将累加后的结果输出. Java 版本: 1.读取文件中的数据,一行一行的读取: 2.将读到的数据进行切割: 3.对切割后的数组中的单词进行计算. Hado

基于Flash与window平台本地程序通信实现媒体流发布

1 开发一种window平台本地发布媒体流客户端程序,该程序完成音视频采集.DSHOW虚拟摄像头.虚拟视频功能.编码.发布媒体流媒体.伴奏管理等功能,本程序安装时将虚拟摄像头注册到window系统. 2 window平台本地程序在运行后,建立6个信令监听socket,为防止网络安全软件或服务发出绑定端口告警从而影响用户体验与防止与本机的其它程序的监听端口冲突与,6个信令监听socket绑定网络地扯127.0.0.1.端口分别为843(用于Flash快速获取策略访问控制文件),12168,2216

基于storm的实时数据处理方案

1 文档说明 该文档描述的是以storm为主体的实时处理架构,该架构包括了数据收集部分,实时处理部分,及数据落地部分. 关于不同部分的技术选型与业务需求及个人对相关技术的熟悉度有关,会一一进行分析. 该架构是本人所掌握的一种架构,可能会与其他架构有相似的部分,个人会一一解释对其的理解. 这个文章写的很详细,相信对大家在实时处理整体理解上会有帮助的. 2 实时处理架构 2.1 整体架构图 架构说明: 整个数据处理流程包括四部分,一部分是数据接入层,该部分从前端业务系统获取数据:中间部分是最重要的s

基于Storm的Nginx log实时监控系统

背景 UAE(UC App Engine)是一个UC内部的PaaS平台,总体架构有点类似CloudFoundry,包括: 快速部署:支持Node.js.Play!.PHP等框架 信息透明:运维过程.系统状态.业务状况 灰度试错:IP灰度.地域灰度 基础服务:key-value存储.MySQL高可用.图片平台等 这里它不是主角,不作详细介绍. 有数百个Web应用运行在UAE上,所有的请求都会经过UAE的路由,每天的Nginx access log大小是TB级,如何实时监控每个业务的访问趋势.广告数

基于Storm构建分布式实时处理应用初探

Storm对比Hadoop,前者更擅长的是实时流式数据处理,后者更擅长的是基于HDFS,通过MapReduce方式的离线数据分析计算.对于Hadoop,本身不擅长实时的数据分析处理.两者的共同点都是分布式架构,而且都类似有主/从关系的概念. 本文不会具体阐述Storm集群和Zookeeper集群如何部署的问题,这里想通过一个实际的案例切入,分析一下如何利用Storm完成实时分析处理数据. Storm本身是Apache托管的开源的分布式实时计算系统,它的前身是Twitter Storm.在Stor

基于storm,kafka,mysql的实时统计系统

公司对客户开放多个系统,运营人员想要了解客户使用各个系统的情况,在此之前,数据平台团队已经建设好了统一的Kafka消息通道. 为了保证架构能够满足业务可能的扩张后的性能要求,选用storm来处理各个应用系统上传到kafka中的埋点数据并在Mysql中汇聚. 埋点数据上报的格式为json,会上报类似如下的数据 { "account": "001", "accountName": "旺财宝", "subaccount&q