Delta Lake 数据湖原理和实战.docx

上传人:lao****ou 文档编号:81565 上传时间:2023-02-13 格式:DOCX 页数:21 大小:437.56KB
下载 相关 举报
Delta Lake 数据湖原理和实战.docx_第1页
第1页 / 共21页
Delta Lake 数据湖原理和实战.docx_第2页
第2页 / 共21页
Delta Lake 数据湖原理和实战.docx_第3页
第3页 / 共21页
Delta Lake 数据湖原理和实战.docx_第4页
第4页 / 共21页
Delta Lake 数据湖原理和实战.docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Delta Lake 数据湖原理和实战.docx》由会员分享,可在线阅读,更多相关《Delta Lake 数据湖原理和实战.docx(21页珍藏版)》请在第一文库网上搜索。

1、Delta Lake数据湖原理和实战导读:当下数据湖的概念越来越火,但到底什么是数据湖,你了解到什么程度了?好多小伙伴一直对数据湖没有一个很好的理解,今天我们将从概念和特点上,同你一起梳理下数据湖的核心知识点。数据湖这么火,到底是如何实现的,它是大数据架构的银弹吗?围绕这个问题为大家介绍数据湖的核心实现原理和实战。01我们得先知道数仓是个啥数据湖是从数据仓库的概念上发展而来的。因此在开启数据湖原理和实战之旅前,我们首先得再往前追溯一些很直接的、有强相关性的内容点,说到这就有必要回顾下数仓的基础知识了。咱就从数据仓库概念说起吧,它简称为数仓,英文名Data Warehouse,可简写为DW或DW

2、H。数据仓库是为企业决策提供所有类型数据支持的集合。企业建立数仓的主要目的是为分析性报告和决策支持目的而创建。简单介绍了数据仓库的概念,咱们看下数据有哪些特点。这将帮助我们进一步理解数仓。L数据是面向主题的:是在较高层次上对分析对象的数据的一个完整、一致的描述,能完整、统一地刻划各个分析对象所涉及的企业的各项数据,以及数据之间的联系。2 .数据是集成的:数据进入数据仓库之前,统一源数据中所有矛盾之处,如字段的同名异义、异名同义、单位不统一、字长不一致。3 .时间段内不可更新:无更新操作,不用考虑数据整性保护、并发控制;重点关注高性能查询;BI要求高。4 .数据随时间不断变化:数据仓库随时间变化

3、不断增加新的数据内容;数据仓库随时间变化不断删去旧的数据内容;数仓综合数据中很多跟时间有关。02何为数据湖及其核心要点首先我们看下数据湖的概念,数据湖指的是可以存储任意格式数据(结构化和非结构化)的存储中心。数据湖和数仓最大的区别是:数据湖对数据存储格式没有要求,可以将任何格式的感兴趣的数据轻松地放在数据湖中管理。数据湖是基于数仓概念基础上提出的,其范围比数仓更加广泛。为了便于大家更好地理解数据湖,咱们将通过数据湖与数仓的对比分析展开讲。这部分也是理解数据湖的核心,希望大家能够通过深入理解数据湖和数仓的区别,以辩证的思维方法对数据湖有个比较深入的了解,进而帮助大家实践过程中能够有更多看待问题的

4、视角,尤其是方案落地上的思考。(1)数据层面:数仓的数据大部分来自事务系统、运营数据库和业务线应用程序,有相对明确的数据结构;而数据湖的数据来自IoT设备、网站、移动应用程序、社交媒体和企业应用程序等,既包含结构化数据,也包含非结构化数据。(2) Schema层面:数仓的Schema在数据入库之前的设计阶段就产生了,而数据湖的Schema是在写入数据时实时分析数据结构而产生的。数据仓库模式是schemaon wri te,数据湖模式是 schema on reado(1)数据层面数仓的数据大部分来自事务系统(4)应用层面数据湖的数据既包含结构化数据,也包含非结构化数据数据仓库模式是schema

5、 on write(2) Schema层面数据湖模式是schema on read数据质量数仓数据质量方便比数据湖好数仓主要用于批处理报告、BI和可视化等 数据湖主要用于机器学习、预测分析、数据发现和分析(3)数据质量:因为数仓的数据数据具备完整的数据结构并且支持事务等操作,因此数据质量方面比数仓较好。(4)应用层面:数仓主要用于批处理报告、BI和可视化等;数据湖主要用于机器学习、预测分析、数据发现和分析。03数据湖面临的挑战前面通过数据湖和数仓的对比分析,大家可能会感觉数据湖真是个“好东西”,让我赶快实战起来吧。莫急,其实数据湖的概念,是随着业务对需求的变化在数仓不能满足要求的情况下提出来的

6、。不过要实现数据湖提出的愿景,其实还是面临很多具体的技术挑战。接下来咱们介绍下数据湖实现上的技术挑战。只有搞清楚了这些,我们才能对如何构建数据湖有个整体的思路,这些挑战也是数据湖要解决的核心问题。(1)对数据湖进行的读写操作不可靠。由于数据湖中数据动辄上TB,因此其读写相对耗时,不可能像关系型数据库那样以锁表加事务的方式保障数据的一致性。这样的话会引起数据写入的过程中有人读取数据,从而看到中间状态数据的情况,类似数据库中的幻读。在实际数据湖的设计中,可以通过添加版本号等方式解决。(2)数据湖的数据质量较差。由于数据湖对数据的结构没有要求,因此大量的各种非结构化的数据会存入数据湖,这样会对后期数

7、据湖中的数据治理,带来很大的挑战。(3)随着数据量的增加,性能变差。随着对数据湖中数据操作的增加,元数据也会不断增加,并且数据湖架构一般不会删除元数据信息,因此元数据湖不断膨胀,处理数据的作业在元数据的查询上会消耗大量的时间。图4(4)更新数据湖中的记录,非常困难。数据湖中的数据更新需要工程师通过复杂逻辑实现,维护困难。(5)数据如何回滚方面:数据处理过程中错误是不可避免的,因此数据湖要有良好的回滚方案保障数据的完整性。结合前面的分享,不难发现,要实现数据湖提出的愿景,还是有很多具体的技术难题需要解决。04copy-On-Write VS Merge-On-Read 模式基于数据湖的理念,有多

8、种数据湖的实现方案。例如KLDL,Hudi和Delta Lake。这些数据湖方案中很重要一个技术选型,就是更新数据是采用Copy-OnTVrite模式,还是采用Merge-On-Read模式。要想理解各个数据湖实现的特点,还是得清楚两者的区别到底在哪儿,如此一来,才能够帮助我们更好地做分析判断。那么这两种模式有何区别呢?01Copy-On-Write模式,指的是当执行数据更新时,从原来的数据复制出来一个副本,在副本上进行数据更新,当副本更新完成后把原始数据替换为当前副本。它属于写放大的操作,适合于数据读取请求多,数据更新请求少的应用场景。02Merge-On-Read模式,指的是用户在写入和更

9、新数据的时候不处理数据的准确性、Schema的兼容性和一直性等问题,当用户查询该部分数据时再对数据进行合并,分析。处理数据的准确性、Schema的兼容性和一直性。然后将处理后的结果返回给用户。也就是说Merge-On-Read是在读数据的时候对数据进行修复的。做个小结:图5通过将数据湖和数仓进行对比分析,我们介绍完了数据湖的核心概念,下面让我们进入这次分享的重头戏,Delta Lake数据湖原理和实战。05Delta Lake数据湖原理在介绍Delta Lake数据湖原理前,让我们先快速看下Delta Lake的概念:DeltaLake是Databricks公司开发的数据湖解决方案,它提供了基

10、于大数据的ACID、版本控制、数据回滚等功能,使得用户基于Delta Lake和云存储能快速构建起数据湖应用。它采用Copy-On-Write模式。1、Delta Lake的主要特点Delta Lake解决了数据湖面对的问题,简化了数据湖构建。下面咱们看下DeltaLake的主要特点,具体包括ACID事务、模式(Schema)管理、数据版本控制和时间旅行、统一的批处理和流接收、记录更新和删除。其中ACID事务、模式(Schema)管理和统一的批处理和流接收是Delta Lake设计的核心要点,需要同学们重点关注。(1) ACID 事务:Delta Lake支持事务操作,在Delta Lake中

11、每个写操作都是一个事务,事务的状态通过事务日志来记录,事务的日志会跟踪每个文件的写操作状态。Delta Lake的并发写操作使用乐观锁的方式控制,当有多个操作同时对一份数据进行写操作时只会有一个写操作成功,其他写操作会抛出异常,以便客户端根据异常情况选择重试还是放弃修改操作。(2)模式(Schema)管理:数据在写入过程中,Delta Lake会检查DataFrame中数据的Schema信息,如果发现新的列数据在表中存在但是在DataFrame中不存在,就会将该列数据存储为null;如果发现DataFrame新的列在表中不存在,则会抛出异常。同时Delta Lake还可以显式地添加新列的DDL

12、和自动更新Schemao(3)数据版本控制和时间旅行:Delta Lake将用户的写操作以版本的形成存储,也就是说每次对数据执行一次更新操作Delta Lake都会生成一个新的版本,用户在读取数据时,可以在API中传入版本号读取任何历史版本的数据。同时,还可以将表中数据的状态还原到历史的某个版本。(4)统一的批处理和流接收(Streaming Sink):DeltaLake可以从Spark的结构化流获取数据并结合自身的ACID、事务、可伸缩的元数据处理的能力,来实现多种近实时的数据分析。(5)记录更新和删除:在未来的版本中,Delta Lake计划支持DML的合并、更新和删除功能。2、Delt

13、a Lake数据存储数据的存储是数据湖要实现的核心技术点,你需要重点关注。接下来咱们介绍下Delta Lake的数据存储原理。Delta Lake的数据存储原理其实很简单。它通过Partition Directories存储数据,数据格式;推荐为Parquet,然后通过Transaction Log (事务日志)记录的表版本(Table Version)和变更历史,以维护历史版本数据。(!)表名称(2)仁务日恋(3) &版本-(4)分区最数据文件Delta Lake中的表其实是一些列操作的结果,例如:更新元数据、更新表名、变更Schema、增加或删除Partition、添加或者移除文件。Del

14、ta Lake中的表是很多操作的结果(I)更新元数据(2)更新表名(3)变更 Schema(4)增施或副除Partition添加或若移除文件图7Delta Lake会以日志的形式将所有的操作存储在表中。也就是说当前表中的数据是一些列历史操作的结果,为Delta Lake表的结构信息。其中包含了表名称、事务口志(每个事务口志文件代表了一个数据版本)、分区目录和数据文件。3、Delta Lake原子性保障如何保障在多用户并发读写卜的情况下数据的原子性,是一个数据湖设计必须要考虑的问题,在该问题的处理上,Delta Lake解决问题的方式很巧妙,它只要保障Commit File的顺序和原子性就可以了。即: 001 snappy ZfQuer;rmMwap.1-sat: 485.-rnodmciaonTifnf: 1602no519000.FauChangr. true,fwntMi,:*w y这里举个例子,我们先在表中添加一个文件001. snappy, parquet,形成一个版本,以00. json的日志文件形式存储。接着删除刚才新增的01. snappy, parquet文件,重新加入一个新的02. snappy, parquet文件形成另外一个版本01. json。OOOOOOOOOOOOOOOOOOOO.jso

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服