实时方案之数据湖探究调研笔记

数据湖是当前备受关注的一个概念,许多企业正在构建或计划构建自己的数据湖。在启动数据湖项目之前,理解数据湖的本质,明确数据湖项目的基本组成,并设计出数据湖的基本架构,对于成功构建数据湖至关重要。关于数据湖的定义,存在多种解释。

维基百科指出,数据湖是一种系统或存储仓库,用于以自然或原始格式存储数据,通常是对象块或文件。这包括原始系统生成的原始数据拷贝以及为各种任务转换而生成的数据,如关系数据库中的结构化数据(行和列)、半结构化数据(如CSV、日志、XML、JSON)、非结构化数据(如电子邮件、文档、PDF等)和二进制数据(如图像、音频、视频)。

AWS定义数据湖为一个集中式的存储库,允许以任意规模存储所有结构化和非结构化数据。

微软的定义较为模糊,并未直接定义数据湖,而是通过描述其功能来定义。数据湖包括所有使得开发者、数据科学家、分析师能够更简单地存储、处理数据的能力。这些能力使得用户能够存储任意规模、任意类型、任意生成速度的数据,并跨平台、跨语言进行各种类型的分析和处理。

关于数据湖的定义虽然众多,但基本上都围绕以下几个特性展开:

数据湖需要提供足够的数据存储能力,保存一个企业/组织的所有数据。数据湖可以存储海量的任意类型的数据,包括结构化、半结构化和非结构化数据。数据湖中的数据是原始数据,是业务数据的完整副本,保持了它们在业务系统中的原始状态。数据湖需要具备完善的数据管理能力(完善的元数据),可以管理数据源、数据格式、连接信息、数据schema、权限管理等要素。数据湖需要具备多样化的分析能力,包括但不限于批处理、流式计算、交互式分析以及机器学习,同时需要提供任务调度和管理能力。数据湖需要具备完善的数据生命周期管理能力,不仅存储原始数据,还能保存各种分析处理的中间结果,并完整记录数据的分析处理过程,帮助用户追溯任意一条数据的产生过程。数据湖需要具备完善的数据获取和数据发布能力,支持各种数据源,获取全量/增量数据,并规范存储,推送分析处理结果到合适的存储引擎,满足不同的应用访问需求。对于大数据的支持,包括超大规模存储以及可扩展的大规模数据处理能力。

综上所述,个人认为数据湖应该是一种不断演进、可扩展的大数据存储、处理、分析的基础设施,以数据为导向,实现任意来源、任意速度、任意规模、任意类型数据的全量获取、全量存储、多模式处理与全生命周期管理,并通过与各类外部异构数据源的交互集成,支持各类企业级应用。

数据湖调研1、Iceberg

Iceberg作为新兴的数据湖框架之一,开创性地抽象出“表格式”(table format)这一中间层,既独立于上层的计算引擎(如Spark和Flink)和查询引擎(如Hive和Presto),也与下层的文件格式(如Parquet,ORC和Avro)解耦。

实时方案之数据湖探究调研笔记

此外,Iceberg还提供了许多额外的能力:

ACID事务时间旅行(time travel),以访问之前版本的数据完备的自定义类型、分区方式和操作的抽象列和分区方式可以进化,而且进化对用户无感,即无需重新组织或变更数据文件隐式分区,使SQL不用针对分区方式特殊优化面向云存储的优化等

Iceberg的架构和实现并未绑定于某一特定引擎,它实现了通用的数据组织格式,利用此格式可以方便地与不同引擎(如Flink、Hive、Spark)对接。因此,Iceberg的架构更加优雅,对于数据格式、类型系统有完备的定义和可进化的设计。

但是,Iceberg缺少行级更新、删除能力,这两大能力是现有数据组织最大的卖点,社区仍在优化中。

2、Hudi

Hudi通常用来将大量数据存储到HDFS/S3,新数据增量写入,而旧数据鲜有改动,特别是在经过数据清洗后放入数据仓库的场景。

在数据仓库如Hive中,对于update的支持非常有限,计算昂贵。

另一方面,若是有仅对某段时间内新增数据进行分析的场景,则Hive、Presto、HBase等也未提供原生方式,而是需要根据时间戳进行过滤分析。

Apache Hudi代表Hadoop Upserts and Incrementals,能够使HDFS数据集在分钟级的时延内支持变更,也支持下游系统对这个数据集的增量处理。

Hudi数据集通过自定义的inputFormat兼容当前Hadoop生态系统,包括Apache Hive,Apache Parquet,Presto和Apache Spark,使得终端用户可以无缝对接。

实时方案之数据湖探究调研笔记

Hudi存储的架构如下图所示:

实时方案之数据湖探究调研笔记

如上图,最下面有一个时间轴,这是Hudi的核心。Hudi会维护一个时间轴,在每次执行操作时(如写入、删除、合并等),均会带有一个时间戳。通过时间轴,可以实现仅查询某个时间点之后成功提交的数据,或是仅查询某个时间点之前的数据。这样可以避免扫描更大的时间范围,并非常高效地只消费更改过的文件(例如在某个时间点提交了更改操作后,仅query某个时间点之前的数据,则仍可以query修改前的数据)。

如上图的左边,Hudi将数据集组织到与Hive表非常相似的基本路径下的目录结构中。数据集分为多个分区,每个分区均由相对于基本路径的分区路径唯一标识。

如上图的中间部分,Hudi以两种不同的存储格式存储所有摄取的数据:

读优化的列存格式(ROFormat):仅使用列式文件(parquet)存储数据。在写入/更新数据时,直接同步合并原文件,生成新版本的基文件(需要重写整个列数据文件,即使只有一个字节的新数据被提交)。此存储类型下,写入数据非常昂贵,而读取的成本没有增加,所以适合频繁读的工作负载,因为数据集的最新版本在列式文件中始终可用,以进行高效的查询。写优化的行存格式(WOFormat):使用列式(parquet)与行式(avro)文件组合,进行数据存储。在更新记录时,更新到增量文件中(avro),然后进行异步(或同步)的compaction,创建列式文件(parquet)的新版本。此存储类型适合频繁写的工作负载,因为新记录是以appending的模式写入增量文件中。但是在读取数据集时,需要将增量文件与旧文件进行合并,生成列式文件。

3、DeltaLake

传统的lambda架构需要同时维护批处理和流处理两套系统,资源消耗大,维护复杂。基于Hive的数仓或者传统的文件存储格式(比如parquet/ORC),都存在一些难以解决的问题:

小文件问题并发读写问题有限的更新支持海量元数据(例如分区)导致metastore不堪重负

实时方案之数据湖探究调研笔记

如上图,Delta Lake是Spark计算框架和存储系统之间带有Schema信息的存储中间层。它有一些重要的特性:

设计了基于HDFS存储的元数据系统,解决metastore不堪重负的问题;支持更多种类的更新模式,比如Merge/Update/Delete等操作,配合流式写入或者读取的支持,让实时数据湖变得水到渠成;流批操作可以共享同一张表;版本概念,可以随时回溯,避免一次误操作或者代码逻辑而无法恢复的灾难性后果。

Delta Lake是基于Parquet的存储层,所有的数据都是使用Parquet来存储,能够利用parquet原生高效的压缩和编码方案。

Delta Lake在多并发写入之间提供ACID事务保证。每次写入都是一个事务,并且在事务日志中记录了写入的序列顺序。事务日志跟踪文件级别的写入并使用乐观并发控制,这非常适合数据湖,因为多次写入/修改相同的文件很少发生。在存在冲突的情况下,Delta Lake会抛出并发修改异常以便用户能够处理它们并重试其作业。

Delta Lake其实只是一个Lib库,不是一个service,不需要单独部署,而是直接依附于计算引擎的,但目前只支持Spark引擎,使用过程中和parquet唯一的区别是把format parquet换成delta即可,可谓是部署和使用成本极低。

4、数据湖技术比较

实时方案之数据湖探究调研笔记实时方案之数据湖探究调研笔记

总结

实时方案之数据湖探究调研笔记实时方案之数据湖探究调研笔记

以上就是实时方案之数据湖探究调研笔记的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/49481.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 12:20:30
下一篇 2025年11月8日 12:21:12

相关推荐

  • Debian Hadoop 性能怎样测试

    在Debian平台上对Hadoop进行性能评估可以依照以下流程执行: 前期准备 Hadoop部署:确保系统上已完成Hadoop的正确安装,可参考官方文档或相关指南完成部署。环境配置调整:修改Hadoop相关的配置文件,如 core-site.xml、hdfs-site.xml、mapred-site…

    2025年12月15日
    000
  • Debian Compton如何优化网络连接

    在使用 Debian Compton(即 Debian 12)时,可以通过多种方式提升网络连接的性能与稳定性。以下是一些可行的优化策略: 系统更新与软件管理 保持系统更新:建议定期执行 sudo apt update && sudo apt upgrade,以便获取最新的功能改进和安…

    2025年12月15日
    000
  • Debian Swap能替代硬盘吗

    Debian Swap(交换分区)不能完全替代硬盘,但它在某些情况下可以起到类似的作用。以下是Swap和硬盘之间的主要区别: Swap(交换分区) 用途: 作为虚拟内存使用,当物理内存不足时,系统会将部分数据暂时移动到Swap中。提供额外的内存空间,帮助系统处理更多的并发任务。 性能: 相比于物理R…

    2025年12月15日
    000
  • Debian域名能否用于电商网站

    当然,Debian域名可以完全应用于电商网站。以下是相关的说明信息: Debian系统在服务器端的应用 Debian是一款非常流行的开源操作系统,以其可靠性和安全性而闻名。它常被用作服务器的操作系统,尤其是在部署Web服务器时,比如Apache和Nginx。 Debian系统的安全性特点 Debia…

    2025年12月15日
    000
  • Debian spool如何优化设置

    Debian系统里的spool服务主要负责处理打印任务及打印队列的相关事务。为了提升Debian系统中spool的运行效率,可实施如下策略: 检查打印队列状态:运用 lpq指令来检视当前打印队列内的任务详情,这样能帮助掌握队列的情况与进展。操控打印作业:借助 lpr 和 lp 命令把文档递交至打印队…

    2025年12月15日
    000
  • 如何在Debian上迁移Tomcat

    在Debian上迁移Tomcat涉及几个重要步骤,包括备份现有配置与应用、下载新版Tomcat、停止旧版Tomcat服务、移除旧版Tomcat、解压新版本Tomcat、调整环境变量、配置systemd服务(如需)以及启动新版本Tomcat。以下是具体的操作流程: 备份现有Tomcat实例 在开始迁移…

    2025年12月15日
    000
  • 如何在Apache2中配置Debian的SEO参数

    在Apache2中配置Debian的SEO参数,可以通过调整Apache的配置文件来实现。以下是一些常见的SEO优化参数和步骤: 1. 开启Gzip压缩 Gzip压缩能够减少传输数据量,加快页面加载速度。 sudo a2enmod deflate 修改/etc/apache2/mods-enable…

    2025年12月15日
    000
  • 如何优化Debian Tomcat启动速度

    为了提升Debian系统上Tomcat的启动效率,可尝试以下几种方式: 移除多余Web应用:从webapps目录中清除掉不用的WAR文件或文件夹。这样能缩短Tomcat启动时加载与初始化应用所需的时间。 简化XML配置文件:对server.xml和web.xml文件里的多余配置项进行删减。比如,将u…

    2025年12月15日
    000
  • 如何在Debian Apache2中提高页面权重

    在Debian系统中提升Apache2的页面权重,一般涉及优化服务器性能、增强网站内容的质量、改善用户体验以及采取有效的SEO策略。不过,需要指出的是,“页面权重”这一术语在SEO领域并不常用,通常我们更关注如何提升网站的SEO排名或权重。以下是若干提升Debian Apache2服务器性能及SEO…

    2025年12月15日
    000
  • Debian Apache2如何提升网站排名

    增强网站排名是一项综合性的工作,涵盖了多个优化方面。以下是一些针对Debian Apache2环境下的优化建议,有助于提升网站排名: 系统与软件维护 定期更新:保持系统及软件包处于最新版本,定期执行 sudo apt update && sudo apt upgrade。 Apach…

    2025年12月15日
    000
  • Debian Tomcat配置安全性怎样做

    在Debian系统中对Tomcat进行安全配置是确保系统稳定运行的重要环节。以下是全面的安全配置指南,涵盖从基础设置到高级防护的各个层面。 核心安全设置 更改默认端口:打开 /etc/tomcat9/server.xml 文件,把HTTP端口更改为5678等非标准端口。隐藏版本号信息:在 serve…

    2025年12月15日
    000
  • Debian syslog与journalctl如何协同工作

    在Debian系统中,syslog与journalctl作为两种不同的日志管理系统,能够协作运作,从而提供更为完整和高效的日志记录及查询功能。以下是它们如何共同工作的简要概述: Syslog 经典日志系统: Syslog是一种广泛应用的日志协议及其守护进程。它的任务是收集来自各类服务和应用的日志信息…

    2025年12月15日
    000
  • Debian Tomcat SSL配置步骤

    在Debian操作系统中配置Tomcat以支持HTTPS访问需要执行一系列操作。以下是一份简要说明,旨在指导你如何在Debian系统上为Tomcat设置SSL证书,以便启用安全的HTTPS通信。 安装Tomcat与JDK 安装JDK: sudo apt updatesudo apt install …

    2025年12月15日
    000
  • Debian Tomcat常见问题及解决方案

    在Debian操作系统中安装与配置Apache Tomcat时,用户可能会碰到一些常见的问题。以下是这些问题及其对应的解决策略: 常见问题与解决策略 端口占用:若Tomcat默认选用的8080端口被别的应用占用,则Tomcat将无法开启服务。解决方式是在/etc/tomcat7/server.xml…

    2025年12月15日
    000
  • PHP扩展在Debian上怎么安装

    在Debian系统中安装PHP扩展,通常有以下几种方式可供选择: 方式一:利用APT包管理工具 更新APT软件包列表 sudo apt update 安装PHP扩展通过APT命令安装所需的PHP扩展。例如,如果想安装php-mysql扩展,可执行: sudo apt install php-mysq…

    2025年12月15日
    000
  • Debian Apache2的SEO优化技巧有哪些

    Debian Apache2的SEO优化技巧涵盖多个层面,以下是一些关键方法: 关键词研究:利用工具(如关键词魔术工具)挖掘页面的核心及辅助关键词。 优质内容创作:产出有价值且原创的内容,内容需经过深入调研,确保语言流畅且格式清晰。 内容排版与结构优化: 运用标题和小标题引导阅读。编写简洁明了的段落…

    2025年12月15日
    000
  • Debian Tomcat更新如何操作

    在Debian系统中更新Tomcat版本一般包含以下流程: 先行备份现有Tomcat版本 执行更新操作前,务必先对现有的Tomcat环境做一个完整的备份工作。这涵盖了 /opt/tomcat 文件夹及其相关的配置文档,比如 server.xml 、 context.xml 和 web.xml 等。可…

    2025年12月15日
    000
  • Debian和Sedebian的文件系统有何不同

    目前没有找到关于Sedebian文件系统的具体信息,因此无法直接比较Debian与Sedebian文件系统的区别。不过我可以为您提供一些关于Debian文件系统的相关信息: Debian文件系统概述 文件系统类型:Debian文件系统通常使用ext4作为其默认文件系统,但也支持其他文件系统如XFS、…

    2025年12月15日
    000
  • Debian Tomcat SSL如何配置

    在Debian系统中配置Tomcat以支持SSL需要经过几个关键步骤。下面是一份简明的指导,帮助你完成Tomcat的SSL设置: 1. 安装Tomcat 如果尚未安装Tomcat,可运行以下命令进行安装: sudo apt updatesudo apt install tomcat9 2. 创建SS…

    2025年12月15日
    000
  • Debian Tomcat权限设置要注意什么

    在Debian系统中配置Apache Tomcat的权限时,以下是几个重要的注意事项: 创建专门的用户与组: 推荐创建一个独立的系统用户和组来执行Tomcat任务,而非使用root账户。可通过以下命令实现:“`sudo useradd -m -U -d /opt/tomcat -s /b…

    2025年12月15日
    000

发表回复

登录后才能评论
关注微信