|0x00 什么是数据湖
数据湖的概念最初是由大数据厂商提出的,可以简单理解为一个集中存储数据的数据库,不论是结构化数据or非结构化数据,海量数据or少量数据,都能够支持存储和计算。就像在湖中有多个支流进入一样,结构化数据、非结构化数据、日志数据、实时数据,都流入了同一种数据存储结构之中,并进行不同类型的分析处理,以指导做出更好的决策。
数据湖通常采用Hadoop作为数据的承载对象,随着企业规模的扩大,不同类型的数据越来越多,最终所有企业或个人相关的数据,都被认为是“大数据”,虽然廉价的HDFS是存储数据的最佳选择,但面对更多种类更多时效性要求的数据,使得Hadoop体系无法成为所有场景的最佳答案。
|0x01 数据湖的核心能力与架构
数据湖的核心能力包括:
集成能力:支持结构化,半结构化和非结构化类型的数据,提供统一多元的接入方式,并自动生成元数据信息;
存储能力:支持异构和多样的存储,供经济高效的存储并允许快速访问数据浏览;
治理能力:通过数据的血缘关系,建立完整的上下游脉络关系,支持问题数据的追踪治理;
安全能力:每一层数据都能够实现安全管控能力,包括数据的敏感达标与安全监管;
发现能力:能够快速搜索和使用目标数据,明确知悉其在数据湖中的位置;
分析能力:针对已经接入的数据,提供报表、自助取数、交互式、数据分析、机器学习等分析使用能力;
质量治理:针对已经接入的数据,提供字段校验、完整性分析、产出监控等功能,确保数据的质量是可用的。
明确了核心能力,就可以设计对应的体系结构,大体包括:
数据接入层:提供适配的多源异构数据资源接入方式,包括数据源的配置、数据任务的同步、数据的分发与调度、数据的ETL加工等;
数据存储层:通常采用HDFS,但针对不同的场景可以提供其他的解决方案;
数据计算层:采用多种数据分析引擎,来满足批量、实时等特定计算场景;
数据应用层:不仅需要批量报表、即席查询、交互式分析、数据仓库、机器学习等上层应用,还需要提供自助式数据探索能力。
|0x02 数据仓库与数据湖的差异
一图解释:
额外提一下,数据仓库非常倾向于事前定义,也就是从事务系统中提取,经过维度或其他方式建模后,固化下来。这么做虽然能够更加清晰地展示基础数据结构,降低数据计算量,提升开发速度,但同时也带来了基础模型改动成本高、数据迁移周期长、数据质量管控难等问题,可以说高度结构化的数据仓库,更适合于月度报告等操作用途。
而数据湖倾向于所有数据都保持原始形式,在使用的时候直接用工具来统计分析,对于数据科学家而言,使用起来更加灵活,但同时也非常考验数据引擎的性能,以及科学家对于数据的掌握程度。
|0xFF 数据湖的风险与收益
使用数据湖的风险点在于:
数据湖的设计要求更高,因为面向的数据类型更加的不稳定,非结构化数据可能导致无法掌控的混乱;
数据湖的维护成本更高,随着时间的推移,容易产生严重的数据孤岛问题;
数据的存储与计算成本更高,因为很多特定的场景无法使用廉价的Hadoop体系;
数据的相互验证成本更高,因为缺少了结构化的数据处理,不同的分析师容易产出完全相反的结论;
安全性与数据质量更难掌控,因为架构之间存在比较大的割裂性,每种架构需要不同的实现方案。
使用数据湖的收益点在于:
提供更加高级的分析能力,完全摆脱数据仓库对于数据使用的种种限制;
提供更加灵活的适应场景,比如实时;
允许开发更加快速的适应业务变化,降低数据仓库架构变动带来的迁移成本;
适应更多的数据源类型,一些线下Excel数据也具备了联动的能力;
数据的访问与使用更加灵活,对于一些业务快速发展的单元,时间成本尤其重要。
网友评论