5.实时离线统计系统

一、序

在有了日志等数据之后,我们需要根据业务方的需求来统计各类数据报表以供业务分析使用。这里我们分两个方向离线和实时,都是从零到一随着技术的发展逐步建设和发展完善起来的。由于都是通过一定的模型进行统计,统称为模型化统计系统。

**原始阶段:**在各种技术刚刚起步的阶段,对于各种需求基本都是手动编码去做一下定制化统计与展示;

**初始阶段:**离线和实时的数据统计,在没有指标系统之前,都是通过抽象日志,形成对应的统计规则,然后统计程序根据配置的规则进行解析与统计;

**发展阶段:**通过多维数仓、实时技术的发展,与各种分析组件打通,比如kylin、druid、clickhouse完成数据的统计与分析;

**指标系统阶段:**由实时离线统计系统,解析指标管理系统的配置信息,进行数据的统计工作,从而保证数据口径的一致。

二、离线

  • 前期:定制化统计

大多数公司,都是从定制化开发开始做数据分析的工作,比如最开始针对不同的数据分析需求编写对应的MapReduce程序;针对对应的报表写hive sql统计成结果表,再抽取到mysql进行数据分析与展示…很多情况下都是烟囱式开发,缺点明显:1、维护开发成本高;2、不成体系,逻辑无法复用;3、计算资源的浪费。为了解决这些问题,我们开发了一个MapReduce的离线统计系统,就是下面所述的单维模型统计系统。

  • 中期:单维模型统计与展示


为了解决一些常见的离线的数据统计,首先我们定义了一个后端日志、前端日志的统计模型,在这个模型的基础之上去定义指标,在该系统下只能对一个指标只能做确定性的维度精选统计,比如统计品类下A、B的数据,我们需要配置成2个指标来进行统计,指标支持pv、uv、sum、top统计。这样在后端统计程序上可以相对简单的实现对应的统计,减少了后端复杂度,增加了可靠性。

我们统计好了数据之后,有对应的展示系统来做数据的展示,我们可以通过组合各种指标来形成对应的报表。这套系统在前中期为我们解决了一部分普通的统计需求。

当然,这个系统也是有局限性的,1、对多维分析支持的不够友好 2、展示的单一性 3、整体上不够灵活,在一定范围内实现了配置化统计。这种模式基本也就是实现了告诉你数据是怎样的,不能够进行探索式分析,充分的发掘数据价值。

  • 当前:多维明细数仓+kylin/clickhouse (多维分析)

现在更多的情况是采用数仓明细表+数据分析的各种组件组合这样的方式,这样我们充分的发挥了数据仓库的价值,保证了逻辑的复用口径的统一,由于kylin、clickhouse的特点不同,我们可以针对不同需求数据的特定选择接入到不同的分析组件下,来实现快速的OLAP数据分析。由于这些计算分析的组件,基本都支持sql化的查询,为后续的数据统一的展示对接打下了较好的基础。

  • 当前:SQL模板与数据提取 (圈群提取与分析)


这套系统是针对业务运营、产品人员快速的提取数据所设计的。本质上是通过预先配置好的SQL模板,来帮助不会写sql的运营、产品完成数据统计SQL逻辑的开发。相当于用户标签画像的雏形前期阶段。后续根据这套统计系统扩展了留存、漏斗、标签模型的计算。

SQL模板的定义:配置一个SQL模板,描述对应的sql需要填写哪些参数,使用对应的占位符进行填充,指定对应的占位符使用哪个维度来解析,比如:是日期、品类、城市,这样可以通过下拉框来确定具体执行的sql。

模板关系:通过配置各个模板SQL所筛选出来的人群,可以对各个模板的人群做交集、或集等集合逻辑运算,最终获取到对应满足条件的人群。

数据的计算:在参数与关系确定的情况下,我们通过hive JDBC的方式控制任务的执行与数据的下载。

这个套系统解决了业务人员提取数据的需求,是帮助不会写sql的人员用图形化的方式完成业务sql逻辑的编写。当然这个套系统也有着明显的缺点:
1、完成了sql模板的复用,但是重复性计算,浪费了计算资源
2、逻辑相对黑盒,无法沉淀成对应的数据仓库表,导致sql模板在一定程度上的局限,不能把数据沉淀下来
3、业务逻辑变化时需要更新对应模板

在此基础上我们后续重新设计开发了用户标签系统,做了如下的改进
1、保留了sql模板,不过这个模板是为了可以对接各个业务方的标签数据,比如:搜索推荐的标签库、风控的标签、也可以比较方便的对接到已在数仓的标签表。相对来说用sql模板保留了扩展性。
2、数据标签结果可沉淀数仓,这样相当于生成了对应的标签数仓表,各个分析或业务团队可以直接使用与对接,统一标签标准。
3、引入clickhouse组件,加快标签数据提取效率。相对与之前的hive jdbc,也是一个预计算的过程,由于预计算可以实现更快的数据查询与提取。

三、实时

实时统计系统的发展整体上与离线统计的发展类似,实时的流式处理,向着sql化与批流统一的方向不断的进步与发展,从最开始的storm、spark、spark streaming、flink,不断的进步提升性能,解决各种实时问题,增强功能。各种后续相关的系统也随之应运而生。

  • 前期:定制化统计

在这个阶段,我们主要是根据用户的实时需求,按照特定的业务逻辑编写对应的storm程序进行数据统计,最终把结果落地到hbase当中,以供后续查询系统进行查询与数据展示。在实时模型化统计不能支持的情况下,还需要采用这种方式使用flink等对特殊数据进行统计与处理。

  • 当前:模型化配置统计

kafka日志抽象:针对不同的topic日志,对日志进行抽象配置,指定分隔符和日志行对应的字段信息等
监控项:通过配置好的日志行,来定义监控项生成对应的统计规则,包括条件、维度组合、维度自动发现等等
数据展示:通过前端平台按照特定的数据逻辑来查询对应实时的数据结果

实时模型化统计,整个后端计算引擎最开始我们使用storm,后续逐步升级spark streaming版本,以及flink版本,根据不同的技术特定引入了新的统计方式的支持,比如flink的join操作等。后续可以扩展结果数据可以写入到不同的目的地当中。

  • 当前:实时数据处理+druid

同离线数据一样,实时我们也有着各种多维分析的场景,这里我们使用实时的流式处理技术把数据洗如到druid当中,然后使用druid做实时多维分析的查询与结果数据的展示。

四、展望

  • 统一指标模型系统:实时离线统计系统统一对接一套统计模型管理系统,最大程度上保证实时离线数据口径的一致性;
  • 批流合一:随着流式处理的发展、实时数仓等建设,逐步实现实时、离线统计系统的合并,只保留一套统计系统,减少各种计算资源的浪费。

个人主页
上一篇 《数据系统架构-4.指标定义系统》
下一篇 《数据系统架构-6.BI数据展示平台》

数据系统架构-5.实时离线统计系统相关推荐

  1. 数据系统架构-6.BI数据展示平台

    6.BI数据展示平台 一.序 在有了数仓.实时.离线的数据之后,我们需要一个数据展示分析的平台.如果为了节约成本这部分我们可以是使用一些开源的BI平台,比如cboard.或者在此基础之上做一些定制化二 ...

  2. 《Spark实时词频统计处理系统》

    ------此项目整理自<Spark Streaming 实时流式大数据处理实战>肖力涛                                             第8章 实 ...

  3. 实时离线一体大数据在资产租赁saas服务中使用

    目录 流水查询需求 什么是实时数据 即时查询系统 架构实现 扩大业务覆盖率 大数据需求 实时离线一体化系统之技术架构 实时离线一体化系统之数据流 实时离线一体化接入 数据仓库分层规范化 预计算方案(K ...

  4. 客流统计系统服务器,智能分析客流统计系统

    杭州智诺客流统计系统 系统概述 杭州智诺科技智能分析客流统计系统,主要应用于需要人数统计和客流分析的场所.系统硬件ZN-IV1000C是嵌入式数字视频编码设备,可接入模拟视频,设定规则线,通过网络,将 ...

  5. 第十八章_后端架构选型、离线及实时计算

    文章目录 第十八章_后端架构选型.离线及实时计算 18.1 为什么需要分布式计算? 18.2 目前有哪些深度学习分布式计算框架? 18.2.1 PaddlePaddle 18.2.2 Deeplear ...

  6. 电商推荐系统(上):推荐系统架构、数据模型、离线统计与机器学习推荐、历史热门商品、最近热门商品、商品平均得分统计推荐、基于隐语义模型的协同过滤推荐、用户商品推荐列表、商品相似度矩阵、模型评估和参数选取

    文章目录 第1章 项目体系架构设计 1.1 项目系统架构 1.2 项目数据流程 1.3 数据模型 第2章 工具环境搭建 2.1 MongoDB(单节点)环境配置 2.2 Redis(单节点)环境配置 ...

  7. 010_电商实时交易风控系统_第5天(行业知识、需求分析、架构设计、代码开发) ---没用...

    1.课程名称 电商实时交易风控系统 2.课程目标 1.了解电子商务交易的风险点 2.了解电子商务交易中风险点的处理策略 3.利用Storm技术开发基于规则判定的风控系统 4.掌握企业中风控系统的一般架 ...

  8. 【解决方案】TSINGSEE客流统计系统技术架构与使用场景解析

    一.客流统计系统介绍 TSINGSEE客流统计系统是一种运用视频图像分析技术进行人流量统计的视频智能化应用系统.通过内置算法对视频中人数和人群流动方向等信息进行有效统计并生成报表,用户可以在掌握监控区 ...

  9. Kafka、Flink 数据中台实践:事件模型、调度、实时/离线数仓架构之道

    去年年底,网传阿里董事局主席张勇,在阿里内网发帖称"现在阿里的业务发展太慢,要把中台变薄,变得敏捷和快速."此言一出激起千层浪,难道中台概念真成也阿里败也阿里? 有人戏称阿里&qu ...

  10. 数据系统架构-8.任务调度系统

    任务调度系统 序 在有了各种数据统计任务之后,就产生了任务调度需求,我们需要把任务管理起来统一调度,保证任务之间上下游的依赖关系,监控任务运行状态,异常情况下及时告警,尽可能自动化处理异常,调度系统高 ...

最新文章

  1. 为什么枚举类优于纯枚举?
  2. hdu 3303(线段树+抽屉原理)
  3. oracle 使从表中随机取出一行记录数据
  4. python支持list类型吗_Python Numpy不支持的操作数类型“list”“list”
  5. Java之JMX 详解
  6. Intouch/ifix语音报警系统制作(3-利用自定义过程和函数,重构先前版本)
  7. 管螺纹如何标注_外螺纹、内螺纹的画法,非标准螺纹的画法,你还会画吗?
  8. gyp verb ensuring that file exists: C:\Python27\python.exe
  9. Linux内核下载缓慢解决方法
  10. 揭秘win10系统CPU占用100%的真正原因/找出那些罪魁祸首
  11. 《世界历史》—史前时期的分期
  12. 为什么手机浏览器打不开html文件,手机浏览器打不开网页的解决方法
  13. Windows7下安装Ubuntu 16.04双系统
  14. truelicense使用手册
  15. 霞浦职业中专学校计算机专业,霞浦职业中专学校
  16. No valid entries or contents found, this is not a valid OOXML (Office Open XML) file
  17. 安装Python遇到“0x80070643发生严重错误”
  18. [Python]可视化函数绘图计算器
  19. postgresql 字符串函数
  20. vue中 process.env与process.VUE_CLI_SERVICE

热门文章

  1. java Swing TXT文件分割程序
  2. 如何查看微信image/*.dat文件
  3. 干货!图像集分类大杀器--混合黎曼度量学习
  4. Day03_【数组、ArrayList】
  5. Assuming drive cache: write through 因为硬盘内存不足VM虚拟机开不了机的问题
  6. 浙工大 drcom客户端 嵌入 Linux路由器
  7. 天翼云打造国云安全品牌 铸牢企业云上安全防线
  8. 一学校出150名在校“老板”
  9. 看MySQL数据库的观后感,【看点·光】谈谈赏析和读后感(随笔)_mysql执行语句...
  10. 七牛服务器获取文件内容