数据湖技术 | 青训营笔记

70 阅读8分钟

这是我参与「第四届青训营 」笔记创作活动的第3天,在学习了HDFS的知识和列存储Parquent和ORC之后,为了解决数据分散,存储散乱,价值存储成本问题,我们学习了数据湖还有湖仓一体的技术。

image.png

Wikipedia

A data lake is a storage repository that can store a large amount of structured, semi-structured, and unstructured data. It is a place to store every type of data in its native format with no fixed limits on account size or file. It offers high data quantity to increase analytic performance and native integration.

数据湖是可以存储大量结构化、半结构化和非结构化数据的存储库。它是一个以原始格式存储每种类型数据的地方,对文件大小没有固定限制。它提供高数据量以提高分析性能和原生集成。

A data lake is like a large container which is very similar to real lake and rivers. Just like in a lake you have multiple tributaries coming in, a data lake has structured data, unstructured data, machine to machine, logs flowing through in real-time.

数据湖就像一个大容器,与真实的湖泊和河流非常相似。就像在一个湖中有多个支流进入一样,一个数据湖有结构化数据、非结构化数据、实时的日志。

The data lake democratizes data and is a cost-effective way to store all data of an organization for later processing. Research analysts can focus on finding meaning patterns in data and not data itself.

数据湖是一种存储组织所有数据以供以后处理的经济高效的方式。研究分析师可以专注于寻找数据中的意义模式,而不是数据本身。

Unlike a hierarchal data warehouse where data is stored in files and folders, a data lake has a flat architecture. Every data elements in a data lake is given a unique identifier and tagged with a set of metadata information.

与将数据存储在文件和文件夹中的分层数据仓库不同,数据湖具有扁平架构。数据湖中的每个数据元素都被赋予一个唯一的标识符,并用一组元数据信息进行标记。

数据湖的发展

Hadoop体系的出现是数据湖出现的开始,分布式存储系统HDFS为大量的数据提供了廉价且可靠的存储。

image.png 但HDFS难以合理的维护不断更新的文件元数据。

image.png 为了解决可能存在的数据沼泽问题,我们需要一个介质存储和管理文件的元数据信息,Hive应运而生。

image.png Hive虽然提供了metaStore完成了文件元数据的管理,但是对Schema变更的效率支持不好。

image.png 湖仓一体的诞生

大数据的工作流程是怎样的?这里就要涉及到两个相对陌生的名词:数据的结构化程度和数据的信息密度。前者描述的是数据本身的规范性,后者描述的是单位存储体积内、包含信息量的大小。

一般来说,人们获取到的原始数据大多是非结构化的,且信息密度比较低,通过对数据进行清洗、分析、挖掘等操作,可以排除无用数据、找到数据中的关联性,在这个过程中,数据的结构化程度、信息密度也随之提升,最后一步,就是把优化过后的数据加以利用,变成真正的生产资料。

简而言之,大数据处理的过程其实是一个提升数据结构化程度和信息密度的过程。在这个过程中,数据的特征一直在发生变化,不同的数据,适合的存储介质也有所不同,所以才有了一度火热的数据仓库和数据湖之争。

数据仓库诞生于1990年,是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,主要用于支持管理决策和信息的全局共享。简单点说,数据仓库就像是一个大型图书馆,里面的数据需要按照规范放好,你可以按照类别找到想要的信息。

就目前来说,对数据仓库的主流定义是位于多个数据库上的大容量存储库,它的作用在于存储大量的结构化数据,为管理分析和业务决策提供统一的数据支持,虽然存取过程相对比较繁琐,对于数据类型有一定限制,但在那个年代,数据仓库的功能性已经够用了,所以在2011年前后,市场还是数据仓库的天下。

到了互联网时代,数据量呈现“井喷式”爆发,数据类型也变得异构化。受数据规模和数据类型的限制,传统数据仓库无法支撑起互联网时代的商业智能,随着Hadoop与对象存储的技术成熟,数据湖的概念应用而生,在2011年由James Dixon提出。

相比于数据仓库,数据湖是一种不断演进中、可扩展的大数据存储、处理、分析的基础设施。它就像一个大型仓库,可以存储任何形式(包括结构化和非结构化)和任何格式(包括文本、音频、视频和图像)的原始数据,数据湖通常更大,存储成本也更为廉价。但它的问题也很明显,数据湖缺乏结构性,一旦没有被治理好,就会变成数据沼泽。

从产品形态上来说,数据仓库一般是独立标准化产品,数据湖更像是一种架构指导,需要配合着系列周边工具,来实现业务需要。换句话说,数据湖的灵活性,对于前期开发和前期部署是友好的;数据仓库的规范性,对于大数据后期运行和公司长期发展是友好的,那么,有没有那么一种可能,有没有一种新架构,能兼具数据仓库和数据湖的优点呢?

于是,湖仓一体诞生了。依据DataBricks公司对Lakehouse 的定义,湖仓一体是一种结合了数据湖和数据仓库优势的新范式,在用于数据湖的低成本存储上,实现与数据仓库中类似的数据结构和数据管理功能。湖仓一体是一种更开放的新型架构,有人把它做了一个比喻,就类似于在湖边搭建了很多小房子,有的负责数据分析,有的运转机器学习,有的来检索。

 

image.png  

数据湖应该具备哪些能力

数据湖是一套解决方案,它是为企业的业务诉求服务的,是为发现数据价值提供的一套数据解决方案,

数据存储

统一存储系统:数据需要集中存储在一个存储系统中

支持海量数据:存储系统需要支持海量数据的存储,并且需要具备可扩展的特性,以支持海量数据的存储及性能要求。如 HDFS、AWS S3、Aliyun OSS 等。

任意类型数据:可以支持任意数据类型的存储,包括结构化、半结构化、非结构化的数据。

原始数据不变:数据应该在整个数据湖中保持最原始的一份数据,它与原始数据完全一模一样。

数据分析

支持多种分析引擎:可以通过多种引擎对湖上数据进行分析计算,例如离线分析、实时分析、交互式分析、机器学习等多种数据分析场景。

计算可扩展性:计算引擎需要具备可扩展的能力,具备随数据量不断变大、业务不断增长的弹性数据分析的能力。

存储与计算分离:存算分离的数据湖架构可以灵活的进行资源伸缩,大大节省了成本。

数据湖管理

上述的数据存储和数据分析是数据湖必须具备的基本能力,但是就一个解决方案来说,如果要实际解决业务问题,仅仅是基础能力,并不足以将其应用落地,甚至会变为可怕的数据沼泽。所以在数据湖解决方案中,还需要结合一系列的数据湖上的管理能力,帮助大家管理和识别数据湖中的数据。这些能力包括:

多样化的数据入湖:需要具备把各种数据源接入集成到数据湖中的能力,作为数据湖构建的第一步,其意义不言而喻。

元数据管理:提供统一的元数据能力,可以快速发现数据湖上的元数据,并可对元数据进行管理和优化,避免数据湖成为数据沼泽。

数据安全:对数据可以进行细粒度的权限管控,为企业的数据湖加上安全的锁。更丰富的能力还应该支持敏感数据脱敏,数据加密,标签权限,操作审计等能力。

数据质量:数据质量是对湖内数据正确性、合理性监控的一种能力,及时发现数据湖中数据质量的问题。为有效的数据探索提供保障。

数据探索:可提供在线的数据探索能力,可以满足日常对湖内数据进行快速探索和简单查看的能力,便于更好的管理湖内的数据。

image.png

业界三大数据湖对比:

image.png

前沿的数据湖技术在未来不断发展的过程中终将取代Hive原始的数据仓库技术,我们学习了技术选型的相关思路。

image.png

参考文献

数据湖(一):数据湖概念 (baidu.com) Data lake - Simple English Wikipedia, the free encyclopedia 【大数据专场 学习资料四】第四届字节跳动青训营 - 掘金 (juejin.cn)