实时数仓-数据采集层_1
- 一、实时数仓介绍
- 1、普通实时计算与实时数仓比较
- 2、实时电商数仓项目分层
- 二、实时需求概述
- 1、离线计算与实时计算的比较
- 2、实时需求种类
- 2.1、日常统计报表或分析图中需要包含当日部分
- 2.2、实时数据大屏监控
- 2.3、数据预警或提示
- 2.4、实时推荐系统
- 三、统计架构分析
- 1、离线架构
- 2、实时架构
- 四、日志数据采集
- 1、模拟日志生成器的使用
- 2、日志采集模块-本地测试
- 2.1、Sprintboot作用
- 2.2、快速搭建SpringBoot程序gmall2021-logger,采集模拟生成的日志数据
一、实时数仓介绍
1、普通实时计算与实时数仓比较
普通的实时计算优先考虑时效性,所以从数据源采集经过实时计算直接得到结果。如此做时效性更好,但是弊端是由于计算过程中的中间结果没有沉淀下来,所以当面对大量实时需求的时候,计算的复用性较差,开发成本随着需求增加直线上升。
实时数仓基于一定的数据仓库理念,对数据处理流程进行规划、分层,目的是提高数据的复用性。
2、实时电商数仓项目分层
-
ODS
原始数据,日志和业务数据 -
DWD
根据数据对象为单位进行分流,比如订单、页面访问等等 -
DIM
维度数据 -
DWM
对于部分数据对象进行进一步加工,比如独立访问、跳出行为,也可以和维度进行关联,形成宽表,依旧是明细数据。 -
DWS
根据某个主题将多个事实数据轻度聚合,形成主题宽表。 -
ADS
把Clickhouse中的数据根据可视化需要进行筛选聚合
二、实时需求概述
1、离线计算与实时计算的比较
离线计算:就是在计算开始前已知所有输入数据,输入数据不会产生变化,一般计算量级较大,计算时间也较长。例如今天早上一点,把昨天累积的日志,计算出所需结果。最经典的就是Hadoop的MapReduce方式;
一般是根据前一日的数据生成报表,虽然统计指标、报表繁多,但是对时效性不敏感。从技术操作的角度,这部分属于批处理的操作。即根据确定范围的数据一次性计算。
实时计算:输入数据是可以以序列化的方式一个个输入并进行处理的,也就是说在开始的时候并不需要知道所有的输入数据。与离线计算相比,运行时间短,计算量级相对较小。强调计算过程的时间要短,即所查当下给出结果。
主要侧重于对当日数据的实时监控,通常业务逻辑相对离线需求简单一下,统计指标也少一些,但是更注重数据的时效性,以及用户的交互性。从技术操作的角度,这部分属于流处理的操作。根据数据源源不断地到达进行实时的运算。
2、实时需求种类
2.1、日常统计报表或分析图中需要包含当日部分
对于日常企业、网站的运营管理如果仅仅依靠离线计算,数据的时效性往往无法满足。通过实时计算获得当日、分钟级、秒级甚至亚秒的数据更加便于企业对业务进行快速反应与调整。
所以实时计算结果往往要与离线数据进行合并或者对比展示在BI或者统计平台中
2.2、实时数据大屏监控
数据大屏,相对于BI工具或者数据分析平台是更加直观的数据可视化方式。尤其是一些大促活动,已经成为必备的一种营销手段。
另外还有一些特殊行业,比如交通、电信的行业,那么大屏监控几乎是必备的监控手段。
2.3、数据预警或提示
经过大数据实时计算得到的一些风控预警、营销信息提示,能够快速让风控或营销部分得到信息,以便采取各种应对。
比如,用户在电商、金融平台中正在进行一些非法或欺诈类操作,那么大数据实时计算可以快速的将情况筛选出来发送风控部门进行处理,甚至自动屏蔽。 或者检测到用户的行为对于某些商品具有较强的购买意愿,那么可以把这些“商机”推送给客服部门,让客服进行主动的跟进。
2.4、实时推荐系统
实时推荐就是根据用户的自身属性结合当前的访问行为,经过实时的推荐算法计算,从而将用户可能喜欢的商品、新闻、视频等推送给用户。
这种系统一般是由一个用户画像批处理加一个用户行为分析的流处理组合而成。
三、统计架构分析
1、离线架构
2、实时架构
四、日志数据采集
1、模拟日志生成器的使用
-
(1) 拷贝/资料/数据生成脚本/行为数据的内容到hadoop102的/opt/module/rt_applog目录
-
(2) 根据实际需要修改application.yml
-
(3) 使用模拟日志生成器的jar 运行
java -jar gmall2020-mock-log-2020-12-18.jar
-
(4) 目前我们还没有地址接收日志,所以程序运行后的结果有如下错误
注意:ZooKeeper从3.5开始,AdminServer的端口也是8080,如果在本机启动了zk,那么可能看到405错误,意思是找到请求地址了,但是接收的方式不对
2、日志采集模块-本地测试
2.1、Sprintboot作用
pring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
- 内嵌Tomcat,不再需要外部的Tomcat
- 更方便的和各个第三方工具(mysql,redis,elasticsearch,dubbo,kafka等等整合),而只要维护一个配置文件即可。
- springboot整合了springmvc,spring等核心功能。也就是说本质上实现功能的还是原有的spring ,springmvc的包,但是springboot单独包装了一层,这样用户就不必直接对springmvc,spring等,在xml中配置。
springboot实际上就是把以前需要用户手工配置的部分,全部作为默认项。除非用户需要额外更改不然不用配置。这就是所谓的:“约定大于配置”
如果需要特别配置的时候,去修改application.properties (application.yml)
2.2、快速搭建SpringBoot程序gmall2021-logger,采集模拟生成的日志数据
-
- 在IDEA中安装lombok插件