首页 > 编程知识 正文

rtu数据采集终端,麦捷科技顺络电子比较

时间:2023-05-04 13:16:30 阅读:115040 作者:2052

一、引言

前期两篇连载文章分析了Lambda和Kappa结构固有的一些问题,同时挖掘了流批一体结构的优势。 本文初步探讨快速数据流批处理一体化大数据平台DLink如何基于Flink Iceberg流批处理一体化技术及其实践。

二、需求背景

传统的基于离线的思洛存储器(如Hive )具有高成熟度和稳定性,但在延迟要求相对较高的场景中,需要在实时思洛存储器Flink的帮助下将延迟降低到秒(或分钟),但两个思洛存储器那么,是否有一种体系结构能够将脱机和实时任务、批处理和流任务合并到一个体系结构中进行调度和执行? 答案当然是肯定的。 这就是Dlink的统一技术堆栈。

三、DLink 流批一体技术架构

(1)统一技术栈

整个DLink技术方案的核心理念是“统一”。 从基本的数据堆栈的角度来看,有以下五个部分。

数据存储:首先是数据存储格式的统一。 基于Iceberg快照的读/写隔离和回溯、统一的流批处理写和读、不强大的绑定计算存储引擎、ACID语义和多版本数据、表schema 目录管理器—统一数据目录,与Hive Meta Store接口兼容,具有常见的大数据分析(如Flink、Trino和Hive )、无缝的计算引擎访问和良好的性能计算引擎:统一数据流和链接引擎在数据流和表API中都支持batch和流运行模式。 调度引擎:流后退一体调度程序。 它还支持流后退调度模式。 在调度程序内部,根据DAG的整合和分解、资源的细粒度配置等规则,自适应地调整物理执行计划。 SQL引擎:将流计算SQL与服务类SQL语义(如分析和单击)相统一(与ANSI SQL标准兼容)。 所有SQL类操作都使用统一的SQL引擎。

图一DLink统一技术堆栈DLink的技术特点将在第四节重点介绍。

实时数仓建设最重要的环节是ETL任务。 接下来,结合实际场景和需求,我们来看看Dlink实时数仓如何解决传统Lambda架构在ETL场景中遇到的各种问题。

(2)实时数仓 ETL 场景

下图是DLink流批处理集成数据平台的实时数仓场景(典型的ETL场景)的数据流图。

图DLink的数据流图

2.1 客户需求

客户以前完全使用Oracle构建自己的数据仓库系统,但数据量达到一定规模后,ETL和数据分析的效率越来越低,需要进行体系结构升级。 相比之下,客户第一个是实时提取和写入。 实时提取Oracle增量数据并将其写入Iceberg时,业务数据的并发传输量必须为3000行/秒,端到端延迟必须在1-5分钟内。 二、OLAP统计分析:支持DM层数据查询分析。

总之,对数据处理的实时性和数据的分析提出了要求。

2.2 实时数仓数据流程

结合客户的具体需求和Dlink的产品特性,我们设计了图2的流程批一体化实时数仓结构。 从数据生命周期的角度看,数据过程分为以下三个部分:

数据采集消费(Extract Transform)

快速数据DCT组件(如Debezium )负责捕获Oracle binlog,将其转换为dct-json格式并存储在Kafka中,然后将增量数据导入Iceberg的实时数量仓库。

数据统一存储(Unified Storage)

将所有数据(包括来自ODS、DWD、DWS和DM图层的数据)以iceberg表格式统一存储,以实现图层间差异数据的流程和处理。

数据实时处理(Transform Load)

Flink实际上在实时数仓ETL的下一个阶段发挥了作用:

实时数据输入:使用Flink Kafka Source Connector从Kafka提取数据,然后使用Iceberg sink connector将数据写入ODS层。 增量数据加载:如果ODS层有新数据,则触发iceberg source connector增量加载事件,经过Flink计算,通过Iceberg sink connector将增量数据写入下一个DWD层,然后进行历史记录下游数据更新:对于上游ODS详细信息数据的偶尔更改,触发DLink计算任务准实时重新计算小批量数据,更新下游统计数据,并继续将更改传播到下游。 接下来,让我们从数据收集、转换、存储和分析的角度来看。 快速数据DLi

nk 流批一体大数据平台集成了从数据采集到最终的数据计算、分析能力。结合图二来看,具体涉及的流程如下:

数据采集
采集流程中使用了FastData DCT 以及 Kafka 组件,实现了Oracle增量数据的实时采集。

数据转换
转换环节主要涉及数仓离线链路的处理。类似往期文章中提到的 Lambda 架构,我们实际上可以通过 Flink 批处理读取某个 Iceberg 表的快照做全局分析,得到的结果可供不同场景(如Ad Hoc查询、数据科学、机器学习)下的用户读取和分析。

数据存储
Iceberg 作为通用的表格式存储,很好地分离了计算引擎(Flink、Spark、Hive、Presto等) 和底下的存储层,这样就可以很好地兼容多种计算引擎和文件格式(Parquet、ORC、Avro 等),正在成为数据湖上Table Format 层的事实标准。

Iceberg manifest和snapshot的设计,有效地隔离了不同transaction的变更,非常方便批处理和增量计算。

同时,Apache Iceberg 的社区资源也非常丰富,Netflix、Apple、LinkedIn、Adobe等公司都有PB级别的生产数据,运行在Apache Iceberg之上。

数据分析
由于底层 Iceberg 存储格式的打通,Trino 可实时读取 Flink 写入的 Iceberg 快照,从而实现了端到端近实时(1 分钟之内)的分析。

四、DLink技术亮点

那么,为了支撑以上产品特性,DLink 平台中又引入了哪些创新的技术呢?

在构建 DLink 流批一体大数据平台的过程中,基于 Iceberg、Flink 和 Trino 技术栈,结合客户的实际场景和需求,我们在元数据管理、数据存储格式和数据分析性能上做了一些工作,总结如下:

(1)统一元数据存储(Catalog Manager)
基于 DLink 统一的 Catalog Manager (简称 CM)和 统一元数据模型,实现了 Flink 和 Trino 引擎在catalog、database、表、视图(包括物化视图)和数据类型的统一和 良好的互操作性,彻底解决大数据引擎元数据格式不同造成的各种问题,用户无需代码开发,真正实现 Define Once,Query Anywhere!

同时,DLink CM可对外提供标准的 Hive Meta Store 接口。通过 HMS 接口,我们也计划将 DLink 的内部托管数据源暴露给外部第三方数据引擎(Hive、Spark 等),实现 DLink与大数据生态的打通。


图三 统一元数据存储

对于数据源和 Catalog 的管理,有三种情况:

结构化元数据:可对接开源 Hive Meta Store;半结构化元数据:对于以 CSV、JSON等格式存储在对象存储和分布式文件系统上的元数据信息,可通过 Crawler 任务自动探索和解析,从而自动生成元数据信息;JDBC:支持MySQL、PostgreSQL、Oracle 等数据源的接入。

(2)统一数据存储(Iceberg)
Apache Iceberg 作为一个开放的数据湖表格存储,接口定义清晰,支持Flink、Spark等各种大数据引擎,兼容性比较好。虽然有不少优点,社区也比较活跃,但目前还存在点查、更新性能差的问题,DLink 目前联合Iceberg社区在索引和维表等技术之上做了增强和优化:

Clustering 技术
通过z-order实现多维数据重新聚合排序,提升多维聚合性能,大幅提升查询性能。

二级索引
增加了 Bloom Filter 索引,文件级别的过滤性能大大提升,从而加速点查性能。

MOR(Merge On Read)优化
通过后台自动调度的 Job,合并delete file 和 data file。避免在读取时,查询完data file后,还需要临时合并 delete file 的结果,从而提升了读性能。

小文件合并
类似 MOR Job 的后台任务。基于 Iceberg 的快照隔离和读写分离的优秀特性,我们开发了小文件自动合并功能。后台 Job 自动合并小文件,持续优化读取性能。基于多版本的快照隔离能力,文件合并操作不阻塞用户正常读写。

Lookup Table
维度表在流式计算的应用很广,通过 SQL 的 join 操作实现数据的补全。比如, source stream 是MySQL Binlog 日志中的订单信息,但日志中仅记录了商品的 ID,这样当订单信息入仓,我们进行日志流 Join 的时候,就可以通过查询维表的方式,补全商品名称的信息。

DLink Lookup Table 将热数据高效缓存在本地,冷数据存储在 Iceberg,同时基于数据局部性原理和统计分析,我们加入了自研的缓存替换算法,缓存命中率较高。同时,查询维表时,通过 Projection 与 Filter push down 极大降低缓存的数据量,进一步提高了缓存的命中率。我们初步测试 Streaming Join 维表性能较 Flink 原生 Lookup Table 性能提升2倍以上。

(3)统一 SQL引擎
在统一元数据之后,为了进一步提升易用性,我们在 Trino 和 Flink 之上构建了统一的 ANSI SQL 层,提供了一致的使用体验。数据入湖,DML、DDL等 SQL 操作均由一套 SQL 实现。在统一的 SQL 引擎及其优化器之上,我们做了如下优化:

Dynamic Filtering技术
Dynamic Filtering 技术早在 2005 年就在 Oracle中实现。借鉴数据库的思路,我们基于 Trino 引擎在Iceberg connector 上实现了 Dynamic Filtering 技术,大大减少了 tableScan 算子扫描的数据量。对于Dynamic filtering 技术感兴趣的同学可以参考:Dynamic filtering 。

五、未来展望

在FastData DLink统一元数据与存储的架构之上,FastData DLink将继续优化流式计算和数据入湖的性能,优化端到端时延,秉承简单、高效、易用的理念,构建流批一体、湖仓一体的实时大数据平台。

2022 年,DLink 将在 Flink、Iceberg、Trino 等开源组件上的优化和新特性逐步回馈开源社区,与国内外同行共建良好的大数据生态。

由于本文篇幅的限制,对于DLink大数据流批一体处理、流式计算、多维分析和湖仓一体等,大家关心的下一代大数据平台核心技术,后续我们会持续和大家分享,敬请期待!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。