数据治理大致分为两类,一种贴合业务,特殊情况特殊治理;另外一种平台型治理,不考虑具体业务。本文从一个平台数据架构师视角去理解数据治理。
1.什么是治理
数据管理治理
数据治理的职能是指导其他所有的数据管理职能。数据治理的目的是确保根据策略和最佳实践来正确地管理数据。
财务成本治理
助力业务清晰的洞察资源的成本构成和支出,辅以技术手段,推进进行用量的优化以及资源单价优化,最终实现资源成本利用率的最大化。
架构和效率视角
提升业务的运行效率和降低资源消耗,确保业务能够高效的运转、按照业务所期望时间产出,并且具备全局最
优。
研发流程视角
治理是对已经发生和存在的问题进行分析和诊断,并且能够得到持续的改进和优化。
2.治理框架
很重要的一个图。
3.治理的原则
删除下线:能下线不、能删除不、还有用不、有没有存在的必要、有没有其他可替代的…?
减少用量:能不能減少读取数据量、能不能缩短生命周期、能不能降低调度频率、能不能⋯.?
看上看下、看左看右:看上游依赖、看下游消费、看有没有一样读取和消费…?
代码、存储优化:通过log view、代码逻辑、业务逻辑、消费频次、加工来源,进行代码和存储优化
效果反馈和追踪:存储上的效果、计算上的效果、时间上的效果、架构上的效果
代码治理流程
代码优化的流程
如:引擎特性-》算子挖掘-》优化方案推荐-》优化代码
计算读取I/O的优化
加粗样式渐进计算:改迸周期性凋度下跨多分区的重复分区速取
暴力扫描:改进周期性调度下跨多分区的重复分区读取
业务优化:通过业务知识进行优化和改进
ZORDER重排:改进查询过滤和优化列存储的压缩率
Map Join:降低大表JOIN的传输成本
DynamicFilter :提升过滤的效率,減少shuffle成本
视图化改造:通过视图,降低冗余,上推过滤
Hash Cluster:数据加载环节排序,降低读取成本
参数调优:调整参数提供性能更优的方案
函数替换:等价替换性能更优的函数
函数优化:对函数性能进行改善,加快处理效率和速度
数据的结构化存储
大段的文本内容–(转化为)-》有明的结构确定义
调整数据的排布顺序,提升压缩率(比如Z-Order重排序)
消费端、生命周期、高消耗资源的治理
通过对高资源消耗资产和行为的审计、表存储生命周期的管理、链路级无效资产的下线,来提升成本健康度。
高资源消耗审计和用量评估
事前成本预估和资源监控:通过ODPS提供的成本预估接口评估计算的cost,通过平台实时的检测异常资源消耗。
事后,TOP表和计算的审计:通过预测算法识别未来一段时间的资源消耗,由业务管理员发起对该资源消耗合理性的评估。
事后,补数据成本化:将补数据行为转化成成本,从而推进补数据需求的合理性评估。
表存储生命周期管理
基于精细化的访问情况和成本消耗的估算,为表提供精细化的生命周期推荐。
链路级无效资产下线
有了主动感知,将链路级的任务下线时间缩短到一层一天,极大的提升了下线的效率。
存储治理
存储介质和文件格式
这根据各家情况而定,大致逻辑从SSD(高频)降级到HDD,再江西到RAID-HDD存储,最后OSS冷存储。
智能分级存储
技术原理浅析:基于表和分区的访问频率和自动的对数据进行分级存储。
增量、拉链、累计快照
1.增量:指每个分区只保留变化的数据,用户如果需要查询多天的数据需要读取多个分区。
2.拉链表(极限存储Exstore):指数仓中为了维护数据的历史状态以及最新状态而形成的一种设计模式,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录,从而可以通过拉链很方便的还原出某一时刻的状态或者记录信息。
3.累计快照:周期快照事实表以具有规律性的,可预见的时间间隔来记录事实,时间间隔如每天,每月,每年等等。
视图改写治理和优化
希望下游多个脚本复用我这段查询,我希望高频访问时候用表,从而实现消费用户的时效和计算效率的保障,低频数据就直接读上游吧。
1.普通视图
2.参数化视图
3.物化视图:对于近1天高频复用的查询能够像缓存一样物化成物理表,对于历史数据直接查询上游,这样既节省存储、又节省计算,同时回溯数据又不需要重新手动补数据。
生命周期和回刷战治理
1.生命周期
生命周期只能设定到表级别
表若不指定生命周期,则表(分区)不会根据生命周期规则被ODPS自动回。
分区表若指定生命周期,则根据各个分区的LastDataModifiedTime 判断该分区是否该被回收。不同于非分区表,分区表的最后一个分区被回收后,该表不会被删除。
2.回收站
当数据生命周期到期,或者被覆盖,或者被删除(不指定purge)都会默认先被移动到回收站,回收站具有保留周期,如果保留周期到期,数据将被彻底删。
集群治理框架和主要手段
通过分级存储技术,以数据的访问频率,按照数据的不同访问频率设置不同的存储介质。
跨城网络带宽优化:计算集群下线、就近使用Tunnel、优化跨城直读取为本地直读。
计算混部和错峰调度。