当前位置:   article > 正文

数据湖概述与层级和文件夹划分总结——解读大数据架构(三)_数据湖 数据分层规划

数据湖 数据分层规划


由于半结构化和非结构化数据源的增加(例如传感器、视频和社交媒体),从2010年代初期大数据数据量以前所未有的趋势增加。半结构化和非结构化数据都潜藏着巨大的价值,然而,关系型数仓只能存储结构化的数据,无法存储这些具有价值的海量的非结构化数据,这时数据湖的概念就出现了。

数据湖概述

什么是数据湖?
数据湖是一个比喻,意思数数据可以以自然,原始的方式存放在湖中,不需要经过结构化处理。数据进入数据湖后也是需要被数据清洗和聚合的,才能发挥作用。

为什么使用数据湖?
使用数据湖的原因有很多,尤其是与关系型数仓 一起使用。可以快速将数据存储在数据湖中,而无需进行任何前期工作,这种方法称为读时 schema。这使我们能够快速访问数据生成报表,或者进行机器学习模型的训练。如果我们需要在关系型数仓中进行数据分析,我们可以通过 ETL 快速将数据湖中的数据加载进数仓。
对于数据仓库来说,通常有维护不可用时间,在这期间用户无法查询数仓数据进行分析,如果时间过长,会导致用户体验很差,而数据湖则没有这个烦恼。此外,数据湖还有许多其他的优点:

  • 节省成本,数据仓库中的计算开销比数据湖中的数据计算开销要大很多。
  • 数据湖的数据是存放在对象存储中的,多个计算可以并行访问同一个对象或不同对象,数据处理效率极高。
  • 灵活性,数据湖可以存储各种类型的数据(CSV,JSON 甚至视频文件等),并且可以提供SQL 查询的方式去查询数据。
  • 不需要像数据仓库一样存在维护不可用时间。

数据湖中的数据一般存储在云供应商的对象存储服务中,存储成本非常便宜,理论上数据湖的存储量是无限的。除非出于监管原因,否则数据湖中的数据一般都不会删除。
同时数据湖还可以与传统数据仓库结合使用,定义读时 schema 从数据湖中读取数据写入数仓,然后进行数据分析以及报表生成。此外数据湖还很适合存储流数据,比如说物联网设备的数据,而传统的数据仓库几乎不可能实现。
传统的数据仓库从数据源 ETL 加载进入很容易出现错误,并且加载的原始数据通常在一两天后就会删除,这就会导致一但出错就要重新加载,非常耗时,而数据湖从数据源加载的数据可以保留很长的历史记录。

自下而上的构建

与传统数据仓库不同,传统数据仓库需要从上而下,提前设计好库、表、字段以及写入 schema 等信息,然后在从数据源记载数据。而数据湖则是读时 schema,在从数据源加载数据时几乎没有限制,加载速度非常快。
下图为自上而下的构建方式:

下图为自下而上的构建方式:

这种构建方式使各种数据源的数据可以更加高效,实时的接入数据湖,可以更加快速的从非结构化数据中挖掘出数据价值。

湖数据处理

虽然说数据湖中对写入的数据不做过多的限制,但是入湖的数据也需要通过相应整理和组织,否则数据湖就会变成数据沼泽,其中的数据变得难以管理。
我们可以将数据湖逻辑上划分为多个层:

原始层

  • 存放着从数据源接入的原始的未经处理的数据。

适配层

  • 原始层的数据包括各种类型(CSV, JSON 等),该层就是将不同格式的数据统一为一种存储格式,一般为 Parquet 格式。

清理层

  • 该层会对数据进行清理,转换聚合,生成可以直接用的数据集,使存储的文件在编码,schema,格式,数据类型和内容(比如说为字符串和整数)做到统一。

应用层

  • 改层的数据可以直接供用户或程序使用,进行数据查询分析和报表生成。

沙箱层

  • 该层为可选的,为原始层的副本,原始层的数据一般不能进行修改,沙箱层的数据可以进行修改,供下层使用。

上边是数据湖分常见分层中的一种,分层并不是固定的,我们可以根据实际的业务场景和公司组织架构额外增加一些层级。

文件夹划分

另一种最佳实践是创建一个文件夹结构,通常每一层都有一个不同的文件夹结构,可以出于不同的原因以多种不同的方式进行划分:
数据隔离

  • 根据数据源、业务部门、数据类型不同划分不同文件夹,让不同职位的人可以快速找到自己所需的数据。

访问控制

  • 公司内的不同团队或个人可能具有不同级别的数据访问权限。通过根据用户角色或部门构建文件夹,公司可以实施细粒度的访问控制策略。

性能优化

  • 以特定方式组织数据可以提高性能。例如,如果数据根据特定特征进行分组,则某些数据处理或查询操作可能会更快。

数据生命周期管理

  • 数据通常有一个生命周期,从获取到归档或删除。可以使用不同的文件夹根据数据在生命周期中的阶段来隔离数据。

元数据管理

  • 文件夹可用于管理元数据并将其与原始数据隔离。这种隔离可以简化元数据管理并加速数据查询。

合规要求

  • 在许多行业中,合规性要求要求以特定方式存储和管理某些类型的数据。不同的文件夹结构可以帮助公司满足这些要求。

容灾备份

  • 拥有不同的文件夹结构有助于容灾备份,某些文件夹可能会根据其重要性而更频繁地备份或保留更长时间。

版本控制

  • 不同的文件夹可能用于管理同一数据集的不同版本。

数据分区

  • 可以按关键属性对数据进行分区,以提高查询性能。

ETL 需求

  • 不同来源的数据可能需要不同的 ETL,不同的文件夹可以帮助管理和简化这些流程。

为了满足上边的要求,我们可以通过以下指标进行文件夹划分:

  • 时间分区(年/月/日/小时/分钟),例如源数据加载到数据湖的时间
  • 不同领域
  • 数据来源
  • 不同对象
  • 组织或业务边界
  • 下游应用程序或使用方式
  • 数据类型,例如详细信息或摘要
  • 数据保留策略,例如临时和永久数据、适用期限或项目生命周期
  • 业务影响或重要性,例如高、中或低
  • 数据访问的概率
  • 机密分类,例如公共信息、仅供内部使用、供应商/合作伙伴机密、个人身份信息或敏感信息

下图为原始层和清理层的文件夹结构:

  • 可以发现清理层根据使用目的、类型、和时间进行了文件夹结构的划分。

总结

本文对数据湖进行了概述,讨论了什么叫数据湖以及通过与传统数据仓库对比,说明了为啥要选择数据湖,数据湖的好处是什么。
数据湖的构建与传统的数据仓库的构建方式不同,数据湖采用的是自下而上的构建方式,这种构建方式可以使不同源数据快速入湖,第一时间挖掘数据的价值。
同时我们也讨论了数据湖在逻辑上的层级划分,以及在物理上的文件夹的结构改如何划分。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/462901
推荐阅读
相关标签
  

闽ICP备14008679号