湖仓一体架构研究.docx

上传人:lao****ou 文档编号:535161 上传时间:2024-01-13 格式:DOCX 页数:10 大小:40.01KB
下载 相关 举报
湖仓一体架构研究.docx_第1页
第1页 / 共10页
湖仓一体架构研究.docx_第2页
第2页 / 共10页
湖仓一体架构研究.docx_第3页
第3页 / 共10页
湖仓一体架构研究.docx_第4页
第4页 / 共10页
湖仓一体架构研究.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《湖仓一体架构研究.docx》由会员分享,可在线阅读,更多相关《湖仓一体架构研究.docx(10页珍藏版)》请在第一文库网上搜索。

1、湖仓一体架构研究湖仓一体是将数据湖和数据仓库两者之间的差异进行融合,从而构建一个完整的有机的大数据技术生态体系1。它既具有数据仓库高质量、可查询性高的特点,也具备数据湖弹性存储、灵活处理的优势,并且还可以进一步简化企业数据的基础架构,降低成本,减小数据冗余一、技术选型目前最热门的数据湖产品当属:ApacheHudi,ApacheIceberg和De1ta1ake,Hudi对上下游生态的开放、对全局索引的支持、对F1ink1.13版本的支持,以及对Hive版本的兼容性(Iceberg不支持Hive1.x的版本)等原因,选择了Hudi作为湖仓一体和流批一体的存储引擎。1.1Hudi特性(1)快速U

2、PSert,可插入索引(2)以原子方式操作数据并具有回滚功能(3)写入器之和查询之间的快照隔离(4)SaVePOint用户数据恢复的保存点(5)管理文件大小,使用统计数据布局(6)异步压缩行列数据(7)具有时间线来追踪元数据血统(8)通过聚类优化数据集1. 2hudi优势 (1)ACID支持SnaPShOtIso1ation(多个Writer写的数据无交集,则能够并发执行;不然只能串行。Reader和Writer能够同时跑),相较于ICeberg的WriteSeria1ization(多个Writer必须严格串行,reader和Writer之间则能够同时跑)更好。 (2)hudi支持批处理和流

3、处理,而ICeberg只支持批处理 (3)底层储存可插拔,方便后续转移到其他的分布式文件系统,比如可以从hdfs迁移到s3上,hudi计算引擎强绑定SPark,与之前系统的计算系统接轨 (4)hudi社区相较于其它数据湖开源社区热度更高,后续使用问题也能更好的在网上学习研究。 (5)hudi功能最丰富,提供的UPSert和ComPaCtiOn功能也非常方便数仓和数据湖中使用 (6)对上下游生态开放、支持全局索引、支持f1ink1.3(可以使用f1inkcdc)1.3同步工具Cana1:只适合增量数据的同步并且需要部署,维护起来相对较重。Maxwe11:比较轻量,但与Cana1一样需要配合Kaf

4、ka等消息队列使用F1inkcdc:通过配置F1inkconnector的方式基于F1ink-SQ1进行使用,十分轻巧,并且完美契合基于F1ink-SQ1的流批一体架构。1.4湖仓一体架构1、数据库(mysq1、orac1e)中的数据可以通过f1inkCdC采集进入kafka,充当数仓中的数据原始层(OC1S层),(f1inkCdC也可以直接写入hudi,但是如果多个任务一起调用访问数据库的话,可能会有性能压力)2、数据如果需要分层计算就往下游发送,同时也落一份到hudi中,供离线计算3、在hudi中,离线计算可以起到数据修正的一个作用(有可能存在由于口径调整或者前一天的实时任务计算结果错误,

5、导致重跑历史数据的情况)4、实时计算的数据就保存在kafka中,kafka的数据保存时间也可以自己调整,默认是7天,所以kafka不会保存太久的历史数据,如果要跑太久的历史数据的话,可以通过hudi里跑离线来实现。5、Hudi中的数据可以通过hive的外部表的形式呈现数据。6、除了数据库到kafka这一步,其他的数据计算可以用之前平台的SPark进行流处理和批处理,sparkstreaming可以实现流计算1.5流批一体1、首先数据统一采集进入kafka数据原始层2、原始层数据一部分数据根据处理逻辑进入下流kafka,通过原始层数据一部分备份保存到hudi,以hive的外部表的形式进行数据呈现

6、3、HUdi原始层也是根据同样的数据处理逻辑进行离线数据计算(数据修正:一般批处理都是t+1,所以能避免流处理中的一些问题),可以通过离线的数据结果校验实时的数据质量4、可以用f1ink+Doris的架构,DOriS有StreamIoad可以做批处理,流处理有DOriS做实时查询:ApacheF1inkXApacheDoris构建极速易用的实时数仓架构:二、架构测试DBAcom.bsoft1.O-SNAPSHOT4.0.0hudiArchetype-hudihttp:/maven,apache,org1.14.0org.apache,finkf1ink-javaSf1ink.versionor

7、g.apache,f1inkf1ink-streaming-java2.12Sf1ink.version)org.apache,f1inkf1ink-connector-jdbc_2.12$f1ink.version)org.apache,f1inkf1ink-connector-kafka2.12$f1ink.version)org.apache,f1inkf1ink-connector-cdc-jsonSf1ink.version)com.orac1e.database,jdbcojdbc819.3.0.0org.dcm4chedcm4che-dcm4che-2.02.0.29javax.

8、jsonjavax.json-api1.1.4org.g1assfishjavax.json1.1.4apache.snapshotshttps:/repository.apache,orgcontent/repositories/snapshots/trueapache.re1easeshttps:/repository,apache,orgcontent/repositoriesre1eases/2.1本地到orac1e数据库packagecom.bsoft;importjava.sq1.Connection;importjava.sq1.DriverManager;importjava.

9、sq1.PreparedStatement;importjava,sq1.SQ1EXCePtion;importjava.io.Fi1e;importjava.io.Fi1e1nputStream;importjava.io.Fi1eNotFoundException;importjava.io.IOException;批量采集本地数据到orac1epub1icc1assStoreDicomDataToOrac1epub1icstaticvoidmain(Stringargs)Connectionconnection=nu11;PreparedStatementstatement=nu11;t

10、ry/创建数据库连接connection=DriverManager.getConnection(z,jdbc:orac1e:thin:/hadoop102:1521/ORC1PDB1,“atguigu,123321);/准备SQ1语句Stringsq1=*INSERTINTOdicomimages(id,name,data)VA1UES(?,?,?);statement=connection.preparestatement(sq1);/设置参数statement.setString(1,T);statement.setString(2,examp1e,dcm);/读取DICOM数据文件Fi1efi1e=newFi1e(*C:Users123456Desktopdicom0*);Fi1eInputStreaminputStream=newFi1eInPUtStream(fi1e);/将DICOM数据文件作为二进制数据插入到Orac1e数据库中statement.S

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

当前位置:首页 > 应用文档 > 工作总结

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

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

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



客服