数据湖治理最佳实践

清风孤客 2024-12-09 17:05:51

如果没有最佳实践,存储可能会变得无法维护。自动化数据质量、生命周期和隐私功能可持续清理/移动数据湖中的数据。

数据湖正成为企业从大数据中提取价值的一种日益可行的解决方案,对于早期采用者和新用户来说都是合理的下一步。在独立的逻辑区域中随时可用的结构化、非结构化和历史数据所具备的灵活性、敏捷性和安全性,为企业带来了大量变革性能力。然而,许多潜在用户未能理解的是,可用的数据湖是如何定义的。通常,大数据新手,甚至经验丰富的 Hadoop 老手,都会尝试搭建一些集群,并使用不同的脚本、工具和第三方供应商将它们拼凑在一起;这既不经济高效也不可持续。在本文中,我们将阐述数据湖远不止是几台服务器的简单拼凑:构建一个有效的数据湖需要规划、规范和治理。

在数据湖中,区域允许对数据进行逻辑和 / 或物理分离,从而使环境安全、有序且敏捷。通常,鼓励使用 3 到 4 个区域,但也可以采用更少或更多的区域。一个通用的 4 区域系统可能包括以下内容:

临时区域 —— 用于存放临时数据,如临时副本、流式暂存数据或其他在被摄取之前的短期数据。

原始区域 —— 原始数据将在此区域中保存。这也是敏感数据必须进行加密、标记化或其他安全处理的区域。

可信区域 —— 在对原始区域中的数据进行数据质量检查、验证或其他处理后,该区域的数据就成为下游系统的 “事实来源”。

精炼区域 —— 经过处理和丰富的数据保存在此区域。这用于存储 Hive 等工具或写入数据湖的外部工具的输出结果。

这种安排可根据企业的规模、成熟度和独特用例进行调整,但会通过专用服务器 / 集群实现物理分离,通过精心构建目录和访问权限实现逻辑分离,或者两者结合使用。从视觉上看,这种架构类似于如下所示。

建立和维护定义明确的区域是创建健康数据湖的最重要活动,并有助于本文中其他概念的定义。同时,重要的是要明白区域不能提供什么 —— 即区域并非灾难恢复或数据冗余策略。尽管在灾难恢复中可能会考虑分区域,但建设可靠的基础架构以确保冗余和弹性仍然很重要。

随着新数据源的添加以及现有数据源的更新或修改,维护数据集内部和之间关系的记录变得愈发重要。这些关系可能像列的重命名一样简单,也可能像连接来自不同来源的多个表一样复杂,而每个表本身可能又有多个上游转换。在这种情况下,血缘关系有助于提供可追溯性以了解字段或数据集的来源,并提供审计跟踪以了解更改发生的位置、时间和原因。这听起来可能很简单,但即使使用当今部署的一些专用软件,在数据流经数据湖时捕获其详细信息也极其困难。跟踪血缘关系的整个过程涉及在事务级别(谁访问了数据以及他们做了什么?)和结构或文件系统级别(数据集和字段之间的关系是什么?)汇总日志。在数据湖的背景下,这将包括任何接触数据的批处理和流式工具(如 MapReduce 和 Spark),以及任何可能操作数据的外部系统,如关系数据库管理系统。这是一项艰巨的任务,但即使是部分血缘关系图也能填补传统系统的空白,尤其是随着《通用数据保护条例》(GDPR)等新法规的出现;灵活性和可扩展性是应对未来变化的关键。

在数据湖中,所有数据都可被接纳,但并非所有数据都同等重要。因此,定义数据的来源以及如何管理和使用数据至关重要。对于需要合规性、大量终端用户使用或可审计性的数据,可能需要应用严格的清洗和数据质量规则。另一方面,清洗社交媒体数据或来自各种物联网设备的数据可能收效甚微。也可以考虑在使用端而非获取端应用数据质量检查。因此,单一的数据质量架构可能并不适用于所有类型的数据。必须注意,如果对数据进行 “清洗”,用于分析的结果可能会受到影响。修复数据集中值的字段级数据质量规则可能会影响预测模型的结果,因为这些修复可能会影响异常值。在这种情况下,通过比较 “数据集的预期与实际大小” 或 “空值阈值” 来衡量数据集可用性的数据质量规则可能更合适。通常,所需验证的级别受现有遗留限制或内部流程的影响,因此在制定新规则之前评估公司的现有流程是个好办法。

健康数据湖的一个关键组成部分是隐私和安全,包括基于角色的访问控制、身份验证、授权以及静态和动态数据加密等主题。从纯粹的数据湖和数据管理角度来看,主要主题往往是数据混淆,包括数据标记化和屏蔽。这两个概念应用于帮助数据本身遵循最小权限的安全概念。限制数据访问对许多寻求遵守其行业的国家和国际法规的企业也有法律影响。限制访问有多种形式;最明显的是在存储层大量使用区域。简而言之,可以配置存储层的权限,使得对最原始格式数据的访问极为有限。随着数据随后通过标记化和屏蔽(即隐藏个人可识别信息数据)进行转换,对后续区域数据的访问可以扩展到更大的用户群体。

企业必须努力将数据管理策略的重点放在更有效地保护、保存和服务其数字资产上。这涉及投入时间和资源来全面制定生命周期管理策略,并确定是使用扁平结构还是利用分层保护。传统的数据生命周期管理前提是基于数据被创建、使用然后归档的事实。如今,对于某些事务性数据,这一前提可能仍然适用,但现在许多数据源从读取角度来看仍然处于活动状态,无论是持续的还是在可半预测的时间间隔内。了解并理解其信息、数据和存储介质之间的异同,并能够利用这种理解来最大限度地利用不同存储层级的企业,可以在降低复杂性和成本的同时释放价值。

就像关系数据库在其发展初期一样,近年来 Hadoop 的一些应用也因缺乏最佳实践而受到困扰。在考虑将 Hadoop 用作数据湖时,有许多最佳实践需要考虑。将区域和适当的授权作为数据工作流框架的一部分,可为数据转换提供高度可扩展且并行的系统。个人拙见,欢迎留下评论一起讨论!

0 阅读:2