文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

五分钟技术趣谈 | Apache Paimon浅析及在威胁情报中的应用

2024-11-30 09:30

关注

Part 01

Apache Paimon是什么?  

Apache Paimon是一种多功能的流数据湖平台,支持高速数据摄取、变更数据跟踪和实时分析,它为读/写操作提供灵活的架构,并与各种计算引擎(如Apache Flink、Apache Hive、Apache Spark和Trino)集成。Paimon利用列式文件存储和LSM树结构进行高效的数据更新和查询。它提供连接器,用于消息队列、OLAP系统和批量存储的统一存储。Paimon的表抽象可以无缝的批处理和流处理执行模式,用于数据处理。

图1 Apache Paimon架构图


Part 02

Apache Paimon的特点 

Apache Paimon作为一个数据湖平台,目前具有以下几个主要特点:(1)大规模实时更新;(2)数据表局部更新;(3)流批一体读写。

- 大规模实时更新

Paimon 是一种新颖的数据存储系统,它结合了湖存储、LSM 和列式格式(如ORC、Parquet)等多种技术,为湖存储带来了大规模实时更新能力。其中,LSM 数据结构的追加写能力是 Paimon 实现高性能的关键。Paimon 的设计使得它可以在大规模的数据输入场景中提供出色的性能表现,同时支持快速的查询和分析操作。其特点如下:

- 数据表局部更新

在数据仓库的业务场景中,宽表数据模型是非常常见的。它是指将业务主体相关的指标、维表和属性关联在一起的模型表,也可以泛指将多个事实表和多个维度表相关联到一起形成的宽表。这种模型能够帮助我们更好地理解业务数据,提高数据分析的效率。Paimon开发了一个 Partial-Update 合并引擎。它可以根据相同的主键实时合并多条流,形成 Paimon 的一张大宽表。而且,借助 它里面的LSM 树的延迟 Compaction 机制,我们可以用较低的成本完成合并,从而提高了数据处理的效率。举例来说:当收到主键为1的以下三条数据后,它最终会合并成合并的一条数据。

## 输入
<1, 23.0, 10, NULL>
<1, NULL, NULL, 'This is a book'>
<1, 25.2, NULL, NULL>
## 输出
<1, 25.2, 10, 'This is a book'>

同时,合并后的表可以提供批读和流读:

- 流批一体读写

作为一个流批一体的数据湖存储,Paimon提供了流写流读和批写批读的功能。我们可以利用这些特性来构建Streaming Pipeline,并将数据沉淀到Paimon存储中。在使用 Paimon进行数据处理的过程中,它不仅可以实时更新Flink Streaming作业的数据,还能够支持OLAP查询各个Paimon表的历史和实时数据。此外,还可以通过Batch SQL对之前的分区进行回填,实现批读批写的功能,从而更加高效地进行数据处理。

Part 03

Apache Paimon的数据结构 

在Paimon中一张表的所有数据文件都存在一个层级的目录中。其中第一层包含3个文件夹,分别是snapshot、manifest、schema和data。snapshot文件夹主要用于存储这个表的快照,内容包括为上一次提交产生的 manifest,加上本次提交产生的 manifest 作为增量。schema文件夹主要用于存储这个表的元信息。manifest文件夹主要用于存储这个一系列manifest文件,manifest记录了每次经 checkpoint 触发而提交的数据文件变更,包含新增和删除的数据文件。Data文件夹按桶进行划分。每个桶文件夹包含一个LSM树和changelog文件。

图2 Apache Paimon文件层级图

其文件的更新机制如下:在Apache Paimon中,会在Sink端维护一个Memory Table,用作数据合并,数据会写入到File Store和 Log Store当中,File Store中保存的就是经过桶分区的LSM树存储结构,Log Store则是保存了LSM中的 Write Ahead Log 信息。对于批读,只需要去读取File Store;而对于流读,则需要混合的读取,先读取File Store 中的全量数据,再通过Log Store读取变更的数据。

图3 Apache Paimon读写机制

Part 04

Apache Paimon在威胁情报中的应用 

中国移动智慧家庭运营中心威胁情报云平台是基于中国移动网络和数据资源优势构建的。通过应用威胁情报挖掘技术和运营,该平台为安全产品和安全分析人员提供丰富的恶意IP/域名/样本IOC、whois、PDNS等情报查询服务,帮助企业以较低的成本享受专业的威胁情报服务,更好地了解和应对网络威胁,加强企业的安全防护能力。

在该平台上,业务分析人员需要仔细分析表中的数据完成每周的报表统计。然而,原始业务数据存储在mongoDB上,因此在大数据量的情况直接对mongoDB进行分析操作必定会对业务产生影响。为了减少对业务的影响,业务需要将mongoDB表导入到大数据平台进行分析。考虑到情报数据的规模达到亿级别,并且每天都会发生情报老化以及频繁更新的情况,如果每天都定时进行全量更新,那将会耗费大量资源且效率低下。

因此,为了解决这个问题,我们采用了Flink CDC技术和Apache Paimon数据湖。通过Flink CDC采集mongoDB的oplog,我们能够实现数据的增量更新到Apache Paimon中,从而提高了同步效率并降低了资源消耗。这种方法使得数据更新更加高效且无需大量的资源投入。

下面是一个Flink SQL通过CDC同步mongoDB情报表到paimon的例子。首先创建一张dim_mongo_threaten_score的mongodb-cdc表,接着创建一张dim_fts_threaten_score的paimon表,最后把dim_mongo_threaten_score导入到dim_fts_threaten_score。

CREATE TABLE IF NOT EXISTS dim_mongo_threaten_score (
    _id STRING,
    threaten_type  STRING,
    credit_level STRING,
    threaten_score STRING,
    threaten_source STRING,
    created_time TIMESTAMP(3),
    updated_time TIMESTAMP(3),
    attack_time STRING,
    source STRING,
    ip STRING,
    domain STRING,
    device STRING,
    iphone STRING,
    PRIMARY KEY(_id) NOT ENFORCED
) WITH (
    'connector' = 'mongodb-cdc',
    'hosts' = '......',
    'username' = '......',
    'password' = '.....',
    'database' = '......',
    'collection' = '......',
    'heartbeat.interval.ms' = '......',
    'poll.max.batch.size' = '......'
);
CREATE CATALOG fts_catalog WITH (
    'type'='table-store',
    'warehouse'='hdfs:///......'
);
USE CATALOG fts_catalog;
CREATE TABLE IF NOT EXISTS dim_fts_threaten_score (
    _id STRING,
    threaten_type  STRING,
    credit_level STRING,
    threaten_score STRING,
    threaten_source STRING,
    created_time TIMESTAMP(3),
    updated_time TIMESTAMP(3),
    attack_time STRING,
    source STRING,
    ip STRING,
    domain STRING,
    device STRING,
    iphone STRING,
    PRIMARY KEY(_id) NOT ENFORCED
) with (
    'bucket' = '......',
    'snapshot.time-retained' = '......'
);
insert into fts_catalog.`default`.dim_fts_threaten_score 
select * from default_catalog.default_database.dim_mongo_threaten_score;

从上面的脚本可以看出,我们采用了非常简洁高效的方法来实现从mongoDB到Apache Paimon的数据增量同步。只需要建立两张表并添加一个简单的insert语句,就可以完成整个同步过程。最后,从同步效率上来看,从原先的天级延迟到现在的秒级延迟,其提升显著;从资源消耗上来看,CPU从原先的8核减少到现有的4核,其提升也非常明显。

Part 05

总结展望  

Apache Paimon做为新一代数据湖,其支持高速数据摄取、变更数据跟踪和实时分析,并为读/写操作提供灵活的架构,并与各种计算引擎集成。由于其强大的性能,目前已完成了CDC同步业务数据库数据到数据湖的场景,实现了自动化数据集成。在未来,也可以基于PartialUpdate机制实现准实时宽表,解决大宽表延迟高和资源浪费的情况。同时,也可以基于AppendOnly机制来替换消息队列,达到解耦和降本增效的效果。

来源:移动Labs内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯