一、数据湖的定义
维基百科上定义,数据湖(Data Lake)是一个以原始格式存储数据的存储库或系统。它按原样存储数据,而无需事先对数据进行结构化处理。
一个数据湖可以存储:
- 结构化数据(如关系型数据库中的表),
- 半结构化数据(如CSV、日志、XML、JSON),
- 非结构化数据(如电子邮件、文档、PDF)
- 二进制数据(如图形、音频、视频)。
但是随着大数据技术的融合发展,数据湖不断演变,汇集了各种技术,包括数据仓库、实时和高速数据流技术、数据挖掘、深度学习、分布式存储和其他技术。逐渐发展成为一个可以存储所有结构化和非结构化任意规模数据,并可以运行不同类型的大数据工具,对数据进行大数据处理、实时分析和机器学习等操作的统一数据管理平台。
二、数据湖的参考架构
1、数据集成能力(数据接入)
1)接入不同数据源,包括数据库中的表(关系型或者非关系型)、各种格式的文件(csv、json、文档等)、数据流、ETL工具(Kafka、Logstash、DataX等)转换后的数据、应用API获取的数据(如日志等);
2)自动生成元数据信息,确保进入数据湖的数据都有元数据;
3)提供统一的接入方式,如统一的API或者接口;
2、数据存储
数据湖存储的数据量巨大且来源多样,数据湖应该支持异构和多样的存储,如HDFS、HBase、Hive等;
3、数据搜索查询
数据湖中拥有海量的数据,对于用户来说,明确知道数据湖中数据的位置,快速的查找到数据,是一个非常重要的功能。
4、数据治理
1)自动提取元数据信息,并统一存储;
2)对元数据进标签和分类,建立统一的数据目录;
3)建立数据血缘,梳理上下游的脉络关系,有助于数据问题定位分析、数据变更影响范围评估、数据价值评估;
4)跟踪数据时间旅行,提供不同版本的数据,便于进行数据回溯和分析;
5、数据质量
1)对于接入的数据质量管控,提供数据字段校验、数据完整性分析等功能;
2)监控数据处理任务,避免未执行完成任务生成不完备数据;
6、安全管控
1)对数据的使用权限进行监管;
2)对敏感数据进行脱敏和加密;
7、自助数据发现
提供一系列数据分析工具,便于用户对数据湖的数据进行自助数据发现,包括:
- 联合分析;
- 交互式大数据SQL分析;
- 机器学习与人工智能技术实现商业智能。
- BI报表
一旦企业有了对数据和系统的明晰定义,就可以通过该机制利用大量的企业信息。该机制的一种常见实现策略是通过构建企业级数据湖来提供统一的企业数据模型,在该机制中,数据湖负责捕获数据、处理数据、分析数据,以及为消费者系统提供数据服务。
数据湖能从以下方面帮助到企业:
- ■ 实现数据治理(data governance)与数据世系。
- ■ 通过应用机器学习与人工智能技术实现商业智能。
- ■ 预测分析,如领域特定的推荐引擎。
- ■ 信息追踪与一致性保障。
- ■ 根据对历史的分析生成新的数据维度。
- ■ 有一个集中式的能存储所有企业数据的数据中心,有利于实现一个针对数据传输优化的数据服务。
- ■ 帮助组织或企业做出更多灵活的关于企业增长的决策。
三、数据湖与数据仓库的区别
很多时候,数据湖被认为与数据仓库是等同的。实际上数据湖与数据仓库代表着企业想达成的不同目标。在企业中两者的作用是互补的,不应认为数据湖的出现是为了取代数据仓库,毕竟两者的作用是截然不同的。
特性 | 数据仓库 | 数据湖 |
---|---|---|
数据 | 来自事务系统、运营数据库和业务线应用程序的关系数据 | 来自 IoT 设备、网站、移动应用程序、社交媒体和企业应用程序的非关系和关系数据 |
Schema | 设计在数据仓库实施之前(写入型 Schema) | 写入在分析时(读取型 Schema) |
性价比 | 更快查询结果会带来较高存储成本 | 更快查询结果只需较低存储成本 |
数据质量 | 可作为重要事实依据的高度监管数据 | 任何可以或无法进行监管的数据(例如原始数据) |
用户 | 业务分析师 | 数据科学家、数据开发人员和业务分析师(使用监管数据) |
分析 | 批处理报告、BI 和可视化 | 机器学习、预测分析、数据发现和分析 |
只能处理结构化数据进行处理,而且这些数据必须与数据仓库事先定义的模型吻合。 | 能处理所有类型的数据,如结构化数据,非结构化数据,半结构化数据等,数据的类型依赖于数据源系统的原始数据格式。 | |
处理结构化数据,将它们或者转化为多维数据,或者转换为报表,以满足后续的高级报表及数据分析需求。 | 拥有足够强的计算能力用于处理和分析所有类型的数据,分析后的数据会被存储起来供用户使用。 | |
数据仓库通常用于存储和维护长期数据,因此数据可以按需访问。 | 数据湖通常包含更多的相关的信息,这些信息有很高概率会被访问,并且能够为企业挖掘新的运营需求。 |
四、数据湖的优势
- 轻松地收集和摄入数据:企业中的所有数据源都可以送入数据湖中。因此,数据湖成为了存储在企业内部服务器或云服务器中的结构化和非结构化数据的无缝访问点。通过数据分析工具可以轻松地获得整个无孤岛的数据集合。此外,数据湖可以用多种文件格式存储多种格式的数据,比如文本、音频、视频和图像。这种灵活性简化了旧有数据存储的集成。
- 支持实时数据源:数据湖支持对实时和高速数据流执行 ETL 功能,这有助于将来自 IoT 设备的传感器数据与其他数据源一起融合到数据湖中。
- 更快地准备数据:分析师和数据科学家不需要花时间直接访问多个来源,可以更轻松地搜索、查找和访问数据,这加速了数据准备和重用流程。数据湖还会跟踪和确认数据血统,这有助于确保数据值得信任,还会快速生成可用于数据驱动的决策的 BI。
- 更好的可扩展性和敏捷性:数据湖可以利用分布式文件系统来存储数据,因此具有很高的扩展能力。开源技术的使用还降低了存储成本。数据湖的结构没那么严格,因此天生具有更高的灵活性,从而提高了敏捷性。数据科学家可以在数据湖内创建沙箱来开发和测试新的分析模型。
- 具有人工智能的高级分析:访问原始数据,创建沙箱的能力,以及重新配置的灵活性,这些使得数据湖成为了一个快速开发和使用高级分析模型的强大平台。数据湖非常适合使用机器学习和深度学习来执行各种任务,比如数据挖掘和数据分析,以及提取非结构化数据。
五、数据湖的构建方法
如何快速搭建数据湖?搭建数据湖无非2种选择,一种是基于开源解决方案,一种是基于商业解决方案。开源解决方案的优势是没有授权成本,但有个前提,即你所在的企业得有一个能够驾驭开源技术的团队,有能力自己解决问题。因为,开源解决方案通常都比较零散,不成系统。对于初次搭建数据湖的企业而言,复杂性很高,成功搭建难度大。基于商业的解决方案则相反,对于较小或刚开始使用数据湖的公司来说,基于公有云的数据湖解决方案实现数据湖的快速构建是可行的选择。
不仅搭建和管理维护的复杂性降低,并且成本可监控。其次,基于云的数据湖解决方案技术成熟度更高。能得到更为成熟的技术环境支持,包括工具的多样性。最后,可扩展性和安全也是重要原因之一。目前,数据湖已经在公有云上得到了完美的实现和应用,例如:可以基于Amazon S3、AWS Glue等多个基本云服务快速构建出一套数据湖服务 。近期,AWS宣布,AWS Glue、Amazon Athena在由西云数据运营的AWS中国(宁夏)区域正式上线。
AWS Glue是一种全托管的数据提取、转换和加载 (ETL) 服务及元数据目录。它的价值在于,能让准备数据更容易加载数据到数据库、数据仓库和数据湖,用于数据分析。Amazon Athena则是一种交互式查询服务,使用标准的SQL,可以直接对Amazon S3上的数据做交互查询。而这两种服务都是无服务器服务,意味着不需要管理基础设施,只需要为运行的查询付费。
官方已经给出了如何使用 AWS Glue 和 Amazon S3 构建数据湖基础和如何使用Amazon Athena 分析数据的具体教程,本文就不再赘述。当然,如果你觉得这种方式还有些复杂,那么接下来的一项服务,可以重点关注。去年,AWS发布了一项名为AWS Lake Formation的新服务,进一步降低了数据湖搭建的门槛,该服务简化了数据湖的创建过程,并在几天(而不是几个月)内构建一个安全的数据湖。
不过,该服务目前还未在中国正式推出。当然,你也可以视自身情况自行选择其他供应商,本文推荐基于AWS数据湖解决方案来实现快速搭建数据湖,是因为,到目前为止,AWS数据湖/数据分析解决方案是最完整,提供服务最丰富的,也是成功案例最多的。