目录
数据爆炸式增长,采集、储存、计算,挑战。
数据计算
离线计算、实时计算,构建统一、规范、可共享。
从数据计算频率角度分为:
离线数据仓库 T+1
实时数据仓库
数据加工链路分层:
1、操作ODS
2、明细DWD
3、汇总DWS
4、应用ADS
数据服务
以整合计算好的数据作为数据源,对外通过接口的方式提供数据服务。
数据应用
通过合适的应用提供给用户。
一、数据采集:
AplusJS web端;UserTrack app端。
页面浏览量 Page View PV
是最原始的要求,HTTP协议:
用户键入、浏览器发出HTTP请求、服务器返回HTTP相应、浏览器解析
浏览器开始解析文档时,才时开始进行采集日志的最好时机。
HTML文档埋点,请求日志采集服务器。
交互日志
无法统一规定采集内容
埋点, 采集代码和业务代码一同触发
接收日志后一般不做解析,直接转存,可由业务方按需解析,并可与正常的PV日志关联运算。
清洗和预处理
原因:
1.虚假、恶意流量日志,合法性校验,是长期艰苦的对抗过程
2.缺项补正,标准化,如登录后对登陆前做身份信息回补。
3.无效数据
4.数据安全,需预先隔离
app日志:
采集sdk实现
鼓励在客户端聚合
设备标识:
对于登录用户,用户ID;对于未登录,PC Cookie APP 还是一个需要攻克的难题。
二、数据同步
不同系统中的数据流转
1.同步直连 2.数据文件 3.解析
同步:
1.离线类型的数据仓库,定时同步到业务系统。
2.实时,持久化到HBase,
当天增量,前一天的全量,合并
三、离线数据
Maxcompute 统一的计算平台
离线数据仓库的存储和计算:数据导入、分布式计算、海量数据仓库、海量数据计算。
不同场景的各种计算任务统一到同一个平台上,共享,统一,提供数据上传/下载通道、 SQL MapReduce 、机器学习算法 图编程模和流式计算模型多种计算分析服务,并且提供完善的安全解决方案。
客户端、接入层、逻辑层、存储与计算层
客户端:
web、sdk、CLT、IDE
逻辑层:
worker、scheduler、executor
D2:
任务开发、调试、发布,生产任务调度,大数据运维,数据权限申请、管理,数据分析工作台
1.创建计算节点
2.节点进入开发环境,成为工作流
3.发布,成为线上生产链路的一环。
SQLSCAN:
提交代码时,触发SQLSCAN检查,
DQC:
Data Quality Center 数据质量中心
数据监控:报警接收人判断并决定如何处理
数据清洗:不符合既定规则的数据清洗掉,非侵入式,ODS后入仓后揿动清洗任务。
在彼岸:
功能测试,数据是否符合预期
任务调度系统
指挥系统,各类任务相互依赖,有向无环
四、实时技术
特点:时效性高、常驻进程、性能要求高、时序局限性
离线:T-N,延迟粒度为天
准实时:H-N,小时
实时:当前,秒
离线和准实时都可在批处理系统实现,如Hadoop
实时需要在流式处理系统中
流式技术框架:
数据采集、数据处理、数据存储、数据服务。
实时采集:
数据库变更日志、比如mysql的binlog日志,HBase的hlog日志、
引擎访问日志,Apache引擎日志、搜索引擎
是业务服务器上的文件,本质是监控文件的内容变化。按批次:数据大小、时间阈值,其中之一达到,则作为一批新的数据采集到数据中间件中。
批次采集频繁,可降低延时,但会降低吞吐量。
数据中间件有:kafka、MetaQ、Notify等消息系统
数据处理:
Strom、S4、Spark Streaming、Flink、StreamCompute
实时数据处理应用的计算任务一般是多线程的。根据主键分桶处理。
去重指标:明细数据达几亿或几十亿的时候,内存放不下了的情况。分情况:
1.精确去重:数据倾斜,对去重值进行分桶Hash
2.模糊去重:布隆过滤器(明细数据的哈希值)、基数估计
事务处理:
系统不稳定导致失败,数据自动ACK、失败重发、事务信息。
数据存储:
中间计算结果、最终计算结果、维表数据
实时任务是多线程的,所以数据库存储系统必须支持多并发读写,且为毫秒级延时。所以一般使用HBase、Tair、MongoDB等列示存储系统。没有关系型数据库方便,但可以存储海量数据。
流式数据模型:
数据分层:
ODS层:从业务系统采集过来的最原始数据,和离线应一致。
DWD层:数据明细层
DWS层:订阅明细层的数据后,会在实时系统中计算出各个维度的汇总指标。各个业务线共用的
ADS层:个性化维度汇总层,一些创新业务
DIM层:实时维表层,基本都是从离线维表层导出来的,供实时应用调用的。
多流关联:
流式计算是增量过程,数据到达时间是不确定和无序的。涉及中间状态的保存和恢复机制。
维表使用:
在实时计算中,关联维表一般会使用当前的实时数据T去关联T-2的维表数据。原因:
1.数据无法及时准备好
2.无法获取全量的最新数据
3.数据的无序
大促保障
1.独占资源和共享资源的策略
2.合理选择缓存机制,降低读写库次数
3.降低拓扑层级
4.内存对象共享
5.高吞吐量和低延时取平衡
单个结点故障时常态,需要对整个链路进行多链路搭建。多机房容灾,异地容灾。
五、数据服务
SOA
开发效率不高、维护成本高
API
将数据按照其统计粒度进行聚合,同样维度的数据采用相同的接口。
如:会员为中心的数据做成一张宽表,只要是查询会员粒度的数据,仅需要调用会员接口即可。
SQL(一些限制和特殊增强)
业务方通过写SQL的方式对外提供服务。
只需关心逻辑表的结构,无需关系底层物理表结构、来源、是否分库分表。
只能满足简单的查询
逻辑表到物理表的映射,自底向上:数据源、物理表、逻辑表、主题
数据的主要来源:a、实时计算结果写入HBase b、同步离线数据到查询库
平台化
微服务,Docker做隔离。
WebSocket
提供数据服务的核心引擎,数据服务者根据规范快速创建服务、发布服务、监控、下线。
数据建模
ER模型
实体关系(Entity Relationship)
需要全面了解企业业务和数据
实施周期非常长
对建模人员的能力要求非常高
高层模型、中层模型、物理模型
维度模型
从分析决策的需求出发构建模型
星形模型、雪花模型
设计步骤:
1.需要进行分析决策的业务过程
2.粒度 3.维表 4.事实