实习过后需要学习一下才更有体会~
学习来源:https://blog.csdn.net/huanggang028/article/details/52168092
问题:数据爆炸式地增长,各种结构化、半结构化、非结构化数据的产生,越来越多的企业开始在大数据平台下进行数据处理。
总体思路
新环境下的数据应用特征
- 业务变化快
- 数据来源多
- 应用深度深
- 系统耦合多
大数据平台特征
- 强大的计算和存储能力:使得更扁平化的数据流程设计成为可能,简化计算过程;
- 多样的编程接口和框架:丰富了数据加工的手段;
- 丰富的数据采集通道:实现非结构化数据和半结构化数据的采集;
- 各种安全和管理措施:保障了平台的可用性。
对于数据仓库的构建要求
- 稳定:数据的产出稳定、有保障;
- 可信:数据的质量要足够高;
- 丰富:数据涵盖的业务面要足够丰富;
- 透明:数据构成流程体系透明,让用户放心使用。
仓库架构设计原则
- 自下而上+自上而下:保证数据搜集的全面性
- 高容错;
- 数据质量监控观察整个数据流程;
- 不怕数据冗余,利用存储换易用。
数据模型
模型设计
- 维度建模
结构简单,便于事实数据分析,适合业务分析报表和BI;
- 实体关系建模
结构较复杂,但它便于主体数据打通,适合复杂数据内容的深度挖掘。
每个企业在构建自己数仓时,应该根据业务形态和需求场景选择合适的建模方式。对于应用复杂性企业,可以采用多种建模结合的方式,例如在基础层采用维度建模的方式,让维度更加清晰;中间层采用实体关系建模方式,使得中间层更容易被上层应用使用。
数据分层
数据分层可以使得数据构建体系更加清晰,便于数据使用者快速对数据进行定位;同时数据分层也可以简化数据加工处理流程,降低计算复杂度。
- 基础数据层(存)
* 数据采集:把不同数据源的数据统一采集到一个平台上;
* 数据清洗,清洗不符合质量要求的数据,避免脏数据参与后续数据计算;
* 数据归类,建立数据目录,在基础层一般按照来源系统和业务域进行分类;
* 数据结构化,对于半结构化和非结构化的数据,进行结构化;
* 数据规范化,包括规范维度标识、统一计量单位等规范化操作。
- 中间层(通)
* 打通同一实体不同来源的数据
* 从行为中提取关系
* 可适当增加数据冗余,以保障主题的完整性和数据的易用性
- 集市层(用)
* 场景驱动建设,各及时之间垂直构建
* 集市层深度挖掘数据价值
* 能够快速试错
数据架构
数据整合
* 结构化数据采集
* 全量采集:每日采集数据库表的快照
* 增量采集:采集数据集每日变化的数据
* 实时采集:实时采集数据集的变化数据
* 非结构化数据特征提取
例如语音转文本、图片识别、自然语言处理等...
* 日志结构化
* 日志采集到平台之前不做结构化
* 通过UDF和MR计算框架实现日志结构化
* 日志原始结构越规范,解析成本越低
* 数据体系
* 数据服务
* 统计服务:偏传统的报表服务,利用大数据平台将数据加工后的结果放入关系型数据库中,供前端的报表系统或业务系统查询;
* 分析服务:提供明细的事实数据,利用大数据平台的实时计算能力,允许操作人员自主灵活的进行各种维度的交叉组合查询。
* 标签服务:大数据的应用场景下,经常会对主体进行特征刻画,比如客户的消费能力、兴趣习惯、物理特征等等,这些数据通过打标签转换成KV的数据服务,用于前端应用查询。
架构中一些实用的点
- 巧用虚拟节点:实现多系统数据源同步,实现跨系统间的数据传输,实现多应用间数据交互。通过巧用虚拟节点减少运维人员在实际出现问题时的运维成本。
- 采用强制分区:在所有的表都上都加上时间分区。通过分区,保证每个任务都能够独立重跑,而不产生数据质量问题,降低了数据修复成本;此外通过分区裁剪,还可以降低计算成本。
- 计算框架应用:完成日志结构化、同类数据计算过程、减少数据扫描次数等操作,减轻了开发人员的负担,同时更容易维护。
- 优化关键路径:每份数据的产出都有一个关键数据加工路径;优化关键路径中耗时最长的任务是最有效的保障数据产出时间的手段;对重要数据产出增加基线监控。
数据治理
数据质量
- 事前:制定每份数据的数据质量监控规则
- 事中:监控和影响数据生产过程,不符合质量要求的数据不算产出数据;
- 事后:数据质量情况分析和打分,兔绒数据质量提升
数据生命周期管理
- 对重要的基础数据长期保留
- 对数据中间计算过程数据,在保障满足绝大部分应用访问历史的前提下,缩短数据保留周期,有助于降低存储成本;