Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的

发布时间:2022-01-04 16:13:59 作者:柒染
来源:亿速云 阅读:202

今天就跟大家聊聊有关Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

摘要:我们将对 RocksDB、Heap 和 Gemini 在相同场景下进行压测,并对其资源消耗进行对比。测试的 Flink 内核版本为 1.10.0。

微博机器学习平台使用 Flink 实现多流 join 来生成在线机器学习需要的样本。时间窗口内的数据会被缓存到 state 里,且 state 访问的延迟通常决定了作业的性能。开源 Flink 的状态存储主要包括 RocksDB 和 Heap 两种,而在去年的 Flink Forward 大会上我们了解到阿里云 VVP 产品自研了一款更高性能的状态存储插件 Gemini,并对其进行了测试和试用。

测试场景


我们使用真实的样本拼接业务作为测试场景,通过将多个流的数据union后对指定key做聚合(keyby),在聚合函数里从各个流中获取相应的字段,并将需要的字段重新组合成一个新的对象存储到 value state 里。这里对每个新的对象都定义一个 timer,用 timer 功能来替代 TimeWindow,窗口结束时将数据发射到下游算子。使用 timer 功能的主要原因是 timer 更灵活,更方便用户自定义,在平台的实用性,可扩展性上表现更好。
MemoryStateBackend vs. RocksDBStateBackend

首先需要说明的是,MemoryStateBackend 不建议在线上使用,这里主要是通过测试量化一下使用 Heap 存储 state 的资源消耗。
 
我们在测试中对 checkpoint 的配置如下:

CheckpointInterval:10分钟CheckpointingMode: EXACTLY_ONCECheckpointTimeout:3分钟

同时对 RocksDB 增加了如下配置:

setCompressionType:LZ4_COMPRESSIONsetTargetFileSizeBase:128 * 1024 * 1024setMinWriteBufferNumberToMerge:3setMaxWriteBufferNumber:4setWriteBufferSize:1GsetBlockCacheSize:10GsetBlockSize:4 * 1024setFilter:BloomFilter(10, false)

测试发现,相同作业处理相同的数据量时,使用 MemoryStateBackend 的作业吞吐和 RocksDB 类似(输入 qps 为 30 万,聚合后输出 qps 为 2 万),但所需要的内存(taskmanager.heap.mb)是 RocksDB 的 8 倍,对应的机器资源是 RocksDB 的 2 倍。

Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的


由此我们得出以下结论:

GeminiStateBackend vs. RocksDBStateBackend 

可以通过如下方式,在 Ververica Platform 产品中指定使用 Gemini state backend:

state.backend=org.apache.flink.runtime.state.gemini.GeminiStateBackendFactory

同时我们对 Gemini 进行了如下基础配置:

// 指定Gemini存储时的本地目录kubernetes.taskmanager.replace-with-subdirs.conf-keys= state.backend.gemini.local.dirstate.backend.gemini.local.dir=/mnt/disk3/state,/mnt/disk5/state// 指定Gemini的page压缩格式(page是Gemini存储的最小物理单元)state.backend.gemini.compression.in.page=Lz4// 指定Gemini允许使用的内存占比state.backend.gemini.heap.rate=0.7// 指定Gemini的单个存储文件大小state.backend.gemini.log.structure.file.size=134217728// 指定Gemini的工作线程数state.backend.gemini.region.thread.num=8

机器配置


Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的


作业使用资源对应参数


Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的


内存相关参数


Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的


对比结果


Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的


Note:全量的样本拼接负载使用 16 台机器无法完全服务,因此我们通过对数据进行不同比例的抽样来进行压测。当出现反压时,我们认为作业已经达到性能瓶颈。

由以上对比可以看出,在数据、作业处理逻辑、硬件配置等都相同的前提下,使用 Gemini 成功处理的数据量是 RocksDB 的 2.4 倍(17280 vs 7200 条/s)。同时通过硬件资源消耗的对比可知,RocksDB 更快达到磁盘 IO 瓶颈,而 Gemini 则具备更高的内存和 CPU 利用率。

看完上述内容,你们对Flink使用RocksDB 和Gemini 的性能对比实验分析是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. RocksDB上锁机制
  2. oracle中使用索引与不使用索引的性能对比分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

flink rocksdb gemini

上一篇:RPC核心知识点有哪些

下一篇:JS的script标签属性有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》