新时代下,通过数字化手段实现精细化运营,释放数据价值,助力企业降本增效,筑牢核心竞争力已是大势所趋。众所周知,企业的数据量随着业务不断增加,结构化、非结构化、半结构化数据类型复杂多变,为此实时入湖、实时分析,大大降低数据处理成本的湖仓一体架构平台,成为企业的首选。

在上一期DEEPNOVA 技术荟系列公开课中《湖仓一体平台关键技术与实践》(点击此链接可查看详情)讲到了湖仓一体和现代技术栈,从现代数据栈延伸到数据基础设施 MVP 架构对整个数据链路都做了详细的描述。

湖仓一体的建设过程中,如何实时引“水”入“湖”?在这一期由滴普科技FastData产品线产品管理部总经理王兵带来的《湖仓技术实践之数据入湖》或许能找到答案。

湖仓数据平台建设的三大关键点

图片来源:Gartner

Gartner 对企业的数据平台基础设施定义了MVP,即最小可行产品,MVP描述了整个数据链路。从图上,我们可以看到数据链路分为三部分:

1.  整个数据如何从数据源进入湖仓核心;

2.  数据在业务层面是如何进行数据应用;

3.   整个数据链路中,数据如何治理。

当我们把数据栈的整个链路打开后发现是非常复杂的。首先需要解决的就是数据集成的场景,包括不同类型的数据源、APP应用、半结构化/非结构化数据的接入和集成。数据集成与数据迁移或者数据同步的场景不同,我们在这里可以简单的分为数据入仓和数据入湖。集成之后进行数据处理,再做数据分析,最终到数据应用。在这条完整的数据链路中,对于不同的数据类型、时效性要求、数据格式要求等都对数据入湖提出了不少要求。

五大典型数据入湖的场景

“湖”顾名思义,具有沉淀性、边界性、精细治理等特点,数据湖里包含各种类型的数据,如离线数据、实时数据,按数据格式分有结构化数据、非结构化数据、还有半结构化数据。数据湖的存储底座通常采用对象存储或者对象存储与传统大数据存储(如HDFS等)结合的方式,对象存储易于扩展的特性也方便支持数据量的快速增长。

1、离线数据入湖

离线数据在进行表一级和整库入湖的过程中,首先把数据从数据库或文件里抽取出来,写进Iceberg表中,其原因是Iceberg本身提供数据的统一存储方式。另外对元数据管理方面,在离线数据入湖之后也能够做到支持更多的计算或分析能力。

2、实时数据入湖

实时数据入湖作为数据入湖的关键场景,在入湖的过程中有三个关键点:

针对不同的数据,通过DataFacts数据集成模块,把整个数据抽取到kafka里。在这个过程中,需要注意配置成抽取整库日志,按照表名+ PK  hash 分发到 topic 的 partition 中,防止数据倾斜;在Flink部分数据抽取任务中,会建立不同的任务对应不同的分区,不同的任务去抽取不同分区里面的数据,按照表名做 hash 分发给各个 writer;跟kafka的分区有所不同,Iceberg不同的分区逻辑是可以去定义。

3、实时采集任务迁移

对于实时数据的传输,或者实时任务的运行方式,在跟离线数据做衔接的时候,希望离线数据运行完之后再和实时数据做衔接。在衔接的过程中,很多时候需要把两个任务同时再往前运行一段时间,再去停掉原来采集的任务,可能比较好的做一个切换。

4、历史数据入湖

原来CDH架构,Hive旧版本是没有办法支撑整个数据的去重,因为可能需要通过手动的方式建立全局或者局部的索引,找到这样的数据,用手动的方式去做删除再添加。

很多企业用户的数据量非常大,历史存量数据可能有几个PB,每天新增的数据量也很多。而且,企业可能很多时候会需要对历史数据做重新的类似测试或者数据的重新复盘,会让这些历史数据发生变化。如何去掉重复数据的情况下入湖,成为企业的难题。

基于Iceberg分区内去重和跨分区去重两大核心能力,滴普科技使用FLink的流式处理,把分区内的数据进行去重,在后端用Spark进行全局的去重。面对这种数据量大,数据链路长的情况,保证整个数据的可靠性和一致性,也是成为历史数据入湖需要考虑的问题。

针对历史数据入湖,滴普科技同时进行了几个方面的优化来加速数据处理:Hive表快速入湖;建立元数据体系,将串行改为并行。

5、归档数据入湖

我们知道,面对一些存储机制和使用期限的原因,我们会把一些数据进行归档存储。那么,在整个数据入湖的过程中,很有可能会出现同步归档的操作,就有可能发生误删数据的情况。

滴普科技通过两个方式去保证归档数据的入湖完整性,第一制作数据“过滤器”,通过匹配的方式识别出要归档的数据,后面的数据再流入到湖仓一体核心的时候,就不会产生误删操作;第二,如果出现一些需要删除的数据同步到数据湖中,可通过Iceberg快照的方式恢复这些数据。

半/非结构化数据入湖方案

由于结构化数据逐渐向多模模型转变,结构化、半结构化、非结构化的模型同时在业务中应用将成为越来越广泛的需求。区别于传统模型,数据湖是一种全量数据,而不是最终数据,所以能够容纳数据的原始模式以及各种数据类型。

针对半/非结构化数据入湖,滴普科技有一套很完善的技术架构。王兵讲到,在整个架构设计中,滴普科技引入了网关组件做中转。这样带来的好处是,一些元数据的采集,包括权限控制、流量控制,以及跟整个认证和用户系统做对接,都是可以在这里面做扩展。其次,在向下和存储做交互的过程中,通过统一的接口方式去对接底层不同的存储,在整个半结构化/非结构化数据入湖的链路上,嵌入了一个可以扩展功能的部件,起到衔接的作用。

当然,在迁移的过程中,还需要解决数据的采集问题。针对不同的数据、不同的系统,并且采集工具也要去解决很多问题。王兵表示,通过调研发现,非结构化数据存储过程中,当这些文件发生变化之后,都会有一个事件来通知,这是实现增量采集的关键。我们需要捕获这样的事件,这个事件就包含了这些数据的变化,是新增、修改还是删除。通过识别出这样的事件,进而利用这些事件,在整个文件发生变化的时候,能把这些事件顺利的处理,这个可以理解为Connector的方式,去做非结构化数据的捕获。通过这种方式,目前能覆盖大量的非结构化数据入湖的场景。

最  后

对于企业来说,数据湖为各种来源的数据提供了整合的可能性。滴普科技在数据湖产品和解决方案中,帮助客户进一步挖掘数据价值,实现美好愿景。

DEEPNOVA 开发者社区作为面向技术开发者的交流学习、生态共创平台,未来,DEEPNOVA会继续以建立技术生态,合作共赢为宗旨,持续激发社区创新力,为开发者们提供更加前沿的技术思想及技术内容,促进圈层交流,学习互助,开拓技术视野。

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐