是一种结合了数据湖和数据仓库优势的新型数据架构。Data lakehouse 是一种将数据湖的灵活性和数据仓库的易用性、规范性、高性能结合起来的新型融合架构。它能够在用于数据湖的低成本存储上,实现与数据仓库中类似的数据结构和数据管理功能,让数据能够在数据湖和数据仓库之间无缝集成和自由流转,帮助用户直接利用数据仓库的能力解决数据湖中的数据分析问题,同时充分利用数据湖的数据管理能力提升数据价值。
数据湖通常以原始格式存储大量的结构化、半结构化和非结构化数据,具有很高的灵活性和可扩展性,但在数据治理和性能方面可能存在一些挑战。
数据仓库则是经过精心设计和优化的数据存储,用于支持高效的数据分析和报表生成,具有良好的数据治理和性能表现,但在处理多种数据类型和适应快速变化的数据需求方面可能不够灵活。
Data lakehouse 融合了两者的优点,它既可以存储各种类型的数据,又具备数据仓库的数据治理和性能优势。它通常具有以下特点:
- 支持多种数据类型:包括结构化、半结构化和非结构化数据。
- 数据治理:提供数据质量、数据安全和数据管理功能。
- 高性能:能够快速处理大规模数据的查询和分析。
- 统一的数据存储:将数据存储在一个统一的平台上,方便数据的管理和使用。
- 开放性:支持多种数据分析工具和技术。
一、Data lakehouse 架构的优势包括
- 存储与计算分离,降低成本:这种设计使存储和计算可根据业务需求独立扩展,无需同步增减,有助于节省资源并降低总成本。同时,存算分离允许系统根据业务需求动态调整计算和存储资源,提高了资源利用率,且支持直接读取离线数仓数据,使系统负载均衡调度更灵活,进一步降低了成本。此外,利用低成本的对象存储实现数据存储,也降低了存储成本,避免了维护多个数据存储系统的成本。
- 保证数据一致性:提供 ACID(原子性、一致性、隔离性、持久性)保证,确保数据写入的一致性,保证了多方同时读取或写入数据时的数据准确性。支持 ACID 事务,这对于金融、电商等需要高并发、高一致性的场景尤为重要。
- 支持多种数据源:支持数据编织,具备多个数据湖和多级数据湖的联邦查询能力,能够打破数据孤岛,减少数据搬迁和数据一致性问题,使用户可以基于多种数据源进行快速数据分析和数据探查。同时支持数据科学、机器学习、SQL 和数据分析等各种工作负载,减少了维护多个工具的成本。
- 统一元数据管理:支持异构数据的统一元数据管理,实现端到端的数据链路自动化元数据采集,支持全链路血缘,可一键式分析技术、业务、操作元数据详情,为数据治理提供了有力支持。基于湖仓底座,还支持多租户和库表列级数据权限,能够很好地进行租户隔离和数据权限管控,确保了数据的安全性和隐私性。
二、劣势或挑战
技术复杂性:Data lakehouse 架构综合了数据湖和数据仓库的功能,其实现和管理可能需要更复杂的技术栈和专业知识。这对企业的技术团队提出了更高的要求,需要他们熟悉和掌握相关的技术,包括数据存储、数据处理、事务管理等方面的技术。
- 数据治理和管理的挑战:尽管 Data lakehouse 旨在改善数据治理,但管理大规模的、多种类型的数据仍然具有挑战性。确保数据的质量、一致性、准确性和安全性需要有效的数据治理策略和工具。由于它支持多种数据源和数据类型,数据的管理和治理可能会变得更加复杂,需要投入更多的精力来建立和维护数据治理框架。
- 初始建设成本:构建一个完善的 Data lakehouse 架构可能需要一定的初始投资,包括硬件、软件、人力等方面的资源。虽然从长期来看,它可能会带来成本效益,但在初期可能需要较高的投入。
- 性能优化的难度:虽然 Data lakehouse 努力提供高性能,但在处理大规模数据和复杂查询时,仍然可能需要进行性能优化。不同的数据类型和工作负载可能需要不同的优化策略,这需要对系统有深入的了解和经验,以确保在各种情况下都能达到满意的性能。
- 数据隐私和安全:随着数据的集中存储和更广泛的访问,确保数据的隐私和安全变得至关重要。需要实施严格的访问控制、数据加密等安全措施,以防止数据泄露和未经授权的访问。同时,处理不同敏感度级别的数据也需要精细的策略和管理。
不同的组织在采用 Data lakehouse 架构时,需要根据自身的需求、技术能力和资源状况来权衡其优势和劣势,并采取相应的措施来最大化其效益。
同时,技术在不断发展和演进,Data lakehouse 相关的技术和工具也在不断改进和完善,未来可能会有新的解决方案来进一步解决或减轻当前存在的一些劣势。
三、数据湖仓的技术复杂性
多种技术组件的集成:它综合了数据湖和数据仓库的功能,涉及到多种技术组件,如分布式存储系统、数据集成工具、元数据管理工具、统一查询引擎等,需要将这些组件有效地集成在一起,并确保它们之间的兼容性和协同工作。例如,需要实现不同存储系统的集成,包括识别和对接多种存储集群技术协议和安全协议;还要对接多个计算或应用,提供统一的数据服务能力。
- 存储格式的选择与优化:为了处理不同类型的数据并提供高性能,需要选择合适的存储格式,如列存储格式(如 Parquet、ORC 等)以及特定的湖仓存储解决方案(如 Delta Lake、Apache Hudi、Apache Iceberg 等)。并且,还需根据具体需求进行存储格式的优化,以平衡性能、效率和成本。例如,Delta Lake 提供了 ACID 事务支持、模式执行和演化以及时间旅行等功能;Apache Hudi 支持增量数据处理等实时数据处理功能;Apache Iceberg 则专注于提供更好的性能、原子提交和模式进化功能等。
- 数据集成和转换:要处理来自各种来源的数据摄入和转换,这涉及到集成内置连接器以及多种数据集成工具(如 Apache NiFi、Kafka 或 Flink 等),以收集、转换和丰富不同来源的数据,包括流数据,提供实时见解和决策能力。
- 元数据管理:元数据管理是关键部分,需要使用数据资产目录工具(如 Apache Hive、Apache Atlas 或 AWS Glue 等)创建集中的元数据存储库,以提供数据血缘、模式、关系和使用模式的全面视图,增强数据的可访问性,确保数据质量,并更好地遵守数据治理策略。
- 分布式处理和资源管理:利用分布式处理框架(如 Apache Spark 等)实现并行执行任务,通过数据分区策略优化查询性能并减少处理过程中读取的数据量。同时,还需要使用资源管理和调度工具(如 Apache Mesos、Kubernetes 和 Hadoop YARN 等)在分布式处理环境中协调和管理资源,确保任务高效执行,并优化资源分配。
- 性能优化:由于数据湖仓的规模和复杂性,确保查询性能、数据访问速度和计算效率等方面的性能是具有挑战性的。需要考虑缓存策略、系统级优化(如利用 SIMD 指令集)以及针对特定工作负载的优化等。例如采用设计良好的缓存框架,利用分层缓存机制减少从远程存储访问数据的延迟;利用如 SIMD 增强使多个数据点能够并行处理统一指令,结合数据湖文件格式中的列存储提高联机分析处理查询的性能。
- 数据治理和安全:确保数据的质量、一致性、准确性和安全性需要有效的数据治理策略和工具。在湖仓一体架构下,存储可能变为权限管理能力较弱的对象存储,需要加强数据治理和安全管理,包括数据验证、数据血缘跟踪、模式执行、基于角色的访问控制等,以确保敏感信息的安全并符合法规要求。
四、数据权限
在数据湖仓中,数据权限面临重大挑战:
1.数据多样性带来的复杂性
数据湖仓中存储着各种类型的数据,包括结构化、半结构化和非结构化数据。不同类型的数据可能需要不同的权限管理方式。例如:
- 结构化数据(如关系型数据库表)通常可以通过传统的基于表格和列的权限设置进行管理。但对于半结构化数据(如 JSON、XML 文件)和非结构化数据(如图像、音频文件),确定合适的权限粒度可能更加困难。
- 这些不同类型的数据可能来自不同的数据源,具有不同的格式和语义,使得统一的权限管理策略难以制定和实施。
2.大规模数据和分布式存储
数据湖仓通常存储着海量的数据,并采用分布式存储架构。这带来了以下挑战: - 权限管理的性能问题:随着数据量的增加,权限检查可能会成为系统性能的瓶颈。每次对数据的访问都需要进行权限验证,对于大规模数据的频繁访问,可能会导致显著的延迟。
- 分布式环境下的一致性问题:在分布式存储中,确保不同节点上的数据权限一致性是一个挑战。如果权限信息没有在各个节点之间及时同步,可能会导致权限漏洞或错误的访问拒绝。
3.多用户和多角色
数据湖仓通常被多个用户和不同的业务部门共享,涉及到复杂的用户角色和权限层次结构。这带来了以下问题: - 角色定义和权限分配的复杂性:确定合适的用户角色并为其分配恰当的权限需要深入了解各个用户的业务需求和数据使用场景。随着组织的发展和业务的变化,用户角色和权限也需要不断调整和优化,这增加了管理的难度。
- 权限冲突的解决:在多用户和多角色的环境中,可能会出现权限冲突的情况。例如,一个用户可能同时属于多个角色,这些角色对同一数据对象的权限可能不一致。解决这种权限冲突需要制定明确的优先级规则和冲突解决策略。
4.数据动态性和实时性
在一些场景下,数据湖仓中的数据是动态变化的,例如实时流数据的摄入和更新。这对数据权限管理提出了新的挑战: - 实时权限更新:对于实时变化的数据,权限也需要能够及时更新以确保数据的安全性。这要求权限管理系统能够快速响应数据的变化,并对权限进行动态调整。
- 临时权限需求:在处理实时数据时,可能会出现临时的权限需求,例如紧急情况下需要临时授权给特定用户访问某些数据。如何快速满足这些临时权限需求,同时确保安全性,是一个挑战。
5.与外部系统的集成
数据湖仓通常需要与外部系统进行集成,如数据分析工具、机器学习平台等。这带来了以下问题: - 权限传递和兼容性:确保数据湖仓中的权限能够正确地传递到外部系统,并与外部系统的权限管理机制兼容,是一个复杂的问题。不同的系统可能有不同的权限模型和接口,需要进行复杂的集成和协调。
- 安全风险:与外部系统的集成可能引入新的安全风险。如果外部系统的安全性受到威胁,可能会影响到数据湖仓中的数据安全。因此,需要建立严格的安全控制和监控机制,以防止外部系统带来的安全风险。
要应对这些技术复杂性,需要具备丰富的技术知识和经验,包括对相关技术的深入了解、系统架构设计能力、性能调优技能以及数据治理和安全管理的专业知识等。同时,也需要不断跟进技术的发展和演进,以适应新的需求和挑战。
Data lakehouse 的出现为企业提供了一种更高效、灵活和可扩展的数据管理解决方案,帮助企业更好地利用数据进行决策和创新。