随着大数据业务的不断开展,各大互联网公司都非常重视数据价值的挖掘。
在公司的日常运行中,各种数据分析挖掘技术,为公司发展决策和业务开展提供数据支持。作者所在的公司内部也形成了一套完善的数据治理方案,核心就是由大数据平台+数据仓库+数据治理平台+数据监控平台来实现数据治理。
公司业务的不断发展加快了数据膨胀的速度,数据不一致等问题也随之而来。同时业务部门的频繁增加和剥离也会对数据治理带来挑战。
例如:不同业务线之间没有统一的数据入口记录和加工业务的发展过程;不同业务线的数据分析人员、数据开发人员,不同产品线之间缺乏有效的沟通,人员的流动也会产生一系列对接问题。
上述问题最终带来的后果就是指标数据可信度低,从而严重影响数据分析决策。
数据治理不仅需要完善的保障机制,还需要具体的治理内容,比如我们的数据怎样规范、元数据怎么来管理、每个过程都需要哪些系统或者工具来配合呢,这些都是数据治理过程中最实际的问题,今天我们将从数据治理的核心领域来解答这些问题。
如上图所示,对于数据仓库层,数据治理平台综合业务的组织形式、指标数据来源、指标定义规则、上层产品使用以及查询的效率指导数据仓库模型建设;
对于数据服务层的产品,业务元数据以及数据元数据均由数据治理平台提供,这样能够保障产品获得信息的一致性,同时也减少了对底层数据的侵入。
数据治理平台的核心是保障数据一致性,同时在保障数据安全和一致性的基础上,尽力提供高可用的数据服务分发能力。保障数据一致性需要在建设的过程中不断进行抽象,形成具有相对单一功能的模块,合理组织模块层级间的关系。
提高数据治理平台的可用性主要包括如下领域的治理。
如上图所示,数据治理平台主要包括数据存储、数据查询、元数据管理、安全管理、数据标准管理和数据应用管理等。
各领域之间需要有机结合,数据标准、元数据、数据质量等几个领域相互协同和依赖。例如数据标准管理可以提升数据合法性、合规性,进一步提高数据质量,减少数据生产问题。
数据存储
数据治理平台的数据存储主要包括:数据仓库宽表/主题表层和数据应用层,存储方式包括:Hive、Kylin、ClickHouse、Druid、MySql。
上图所示的数据存储中的数据加工过程,均由数据开发工程师负责;具体采用哪种存储介质由数据架构师和数据开发工程师综合所需的数据存储空间、查询效率、数据模型组织形式等因素共同决定。
但是后续的使用维护均由数据治理平台来统一管理,主要是通过管理数据表元数据信息查询实现。
数据存储托管之后,数据表元数据信息变更监控、表数据生产(存储空间、生产状态及完成时间)监控、表数据波动(同环比)监控以及表的使用(模型构建及查询效率等)监控及评估,都由数据治理平台自动完成,任何信息的变动都会自动通知对应的负责人,以保障数据应用的安全和稳定。
(此处已添加小程序,请到今日头条客户端查看)
元数据管理
元数据分为业务元数据、数据元数据和操作元数据,三者之间紧密相连。业务元数据指导数据元数据,数据元数据以业务元数据为参考进行设计,操作元数据为两者的管理提供支撑。
数据表模块管理
数据表模块管理涉及数据库信息和数据表信息。其中数据库信息包括数据库链接信息,数据治理平台可以自动获取维护后的数据库信息所对应库中的元数据信息。
数据表信息包括:表的元数据信息(引擎、字段、描述等)、表类型(事实表、维度表)、表的使用情况(是否被模型引用)、表对应的ETL、负责人、监控报警配置、样例数据等。
上述信息为业务用户提供指导,为模型管理提供数据支持,也为数据表和数据的稳定性提供监控和预警。
数据模型模块管理
模型模块管理能够还原业务落地后数据表的组织关系,包括:数据表的关联方式(join、left outer join、semi join等)、数据表的关联限制(where)、模型ER图、模型包含字段、模型字段与维度的绑定关系、模型与指标的绑定关系。
由于数据治理平台主要是针对数据分析使用的,所以主要的模型包括维度模型中的星型模型和雪花型模型。
指标模块管理
指标模块管理包括基础信息、衍生信息和技术信息管理。衍生信息包括关联指标、关联应用管理。基础信息对应的就是指标对应的业务过程信息,由业务人员编写,主要包括指标名称、业务分类、统计频率、精度、单位、指标定义、计算逻辑、分析方法、分析维度等;
基础信息中还有一个比较重要的部分是监控配置,主要是配置指标的有效波动范围区间、同环比波动区间等,监控指标数据的正常运行。
技术信息主要包括数据类型、指标代码,其中核心部分是指标与模型的绑定关系,通过配置对应的计算公式,或者还包括一些额外的高级配置,如二次计算、模型过滤条件等。
数据存储模块管理
在数据资源管理过程中,作者经过不断地实践慢慢摸索出一套适合大数据的存储优化方法,可在元数据的基础上,诊断、加工成多个存储治理项目。
目前已有的存储治理优化项有未管理表、空表、最近93天未访问表、数据无更新无任务表、数据无更新有任务表、开发库数据大于100GB且无访问表、长周期表等。
生命周期管理的根本目的就是用最少的存储成本来满足最大的业务需求,使数据价值最大化。
数据计算模块管理
大型互联网公司的集群上面有几十万甚至几百万的任务,每天存储资源、计算资源消耗都很大。如何降低计算资源的消耗,提高任务执行的性能,提升任务产出的时间,是计算平台和ETL开发工程师孜孜追求的目标,下面将重点介绍任务优化。
SQL/MR作业一般会生成MapReduce任务,在Hadoop中则会生成唯一一个job_id进行标识。
在Map端读数据时,由于读入数据的文件大小分布不均匀,因此会导致有些Map Instance读取并且处理的数据特别多,而有些Map Instance处理的数据特别少,造成Map端长尾。以下两种情况会造成Map端长尾:
第一种情况导致的Map长尾,可以对上游数据合并小文件,同时调节本节点的小文件的参数来进行优化,即通过设置“SET odps.sql.mapper.merge.limit.size=64”和“SET odps.sql.mapper.split.size=256”两个参数来调节,其中第一个参数用于调节Map任务的Map Instance的个数;
第二个参数用于调节单个Map Instance读取的小文件个数,防止由于小文件过多导致Map Instance读取的数据量很不均匀。
第二种情况导致的Map长尾,可以通过distribute by rand()会将Map端分发后的数据重新按照随机值再进行一次分发,避免Map端长尾。
数据安全管理
数据安全管理是数据治理平台的核心功能之一,分为平台操作权限管理和接口调用权限管理。
欢迎关注我的公众号“商业智能研究”,私信回复“资料包”,即可领取大数据、数据中台、商业智能、数据仓库等6G精华资料!