flink-user-zh mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yun Tang <myas...@live.com>
Subject Re: Re: Flink RocksDBStateBackend 问题
Date Tue, 06 Aug 2019 05:44:18 GMT
@lvwenyuan<mailto:lvwenyuan163@163.com>
首先需要明确的一点是,你这里的“FileSystem”指的究竟是checkpoint时存储数据的file
system,还是FsStateBackend,建议下次提问前可以把需要咨询的内容表述清楚一些。

  *   如果指的是存储checkpoint数据的远程file system,在incremental checkpoint场景下,这些数据与RocksDB的创建checkpoint时刷写到本地的sst文件和meta文件是二进制相同的,只是文件名会重命名。如果是savepoint或者全量checkpoint场景下,这些数据是RocksDB中逐个有效entry的序列化内容。
  *   如果指的是FsStateBackend,对于Flink而言存储的数据内容在逻辑上肯定都是一样的,否则就不符合语义了。但是二者在数据存储格式上是有区别的。FsStateBackend所创建的HeapKeyedStateBackend的数据内容都是存储在Java
heap内的,基本数据格式是StateTable[1]和其中存储数据的StateMap[2]。而RocksDB存储的数据主要是RocksDB
native内存中的writer buffer(memtable),block cache,index&filter[3]和已经刷写到磁盘上默认采用snappy压缩的不可变sst文件构成。

[1] https://github.com/apache/flink/blob/master/flink-runtime/src/main/java/org/apache/flink/runtime/state/heap/StateTable.java
[2] https://github.com/apache/flink/blob/master/flink-runtime/src/main/java/org/apache/flink/runtime/state/heap/StateMap.java
[3] https://github.com/facebook/rocksdb/wiki/Memory-usage-in-RocksDB


祝好
唐云

________________________________
From: 戴嘉诚 <a773807943@gmail.com>
Sent: Tuesday, August 6, 2019 12:01
To: user-zh@flink.apache.org <user-zh@flink.apache.org>
Subject: 答复: Re: Flink RocksDBStateBackend 问题

        不是,文档上有说,filesystem是会把正在运行的数据存储在tm的内存中,然后触发checkpoint后,才会写入文件系统上,而rocksdb是直接把运行中的数据写到了rocksdb上,看样子是不占用运行中的tm的内存。

 https://ci.apache.org/projects/flink/flink-docs-release-1.8/ops/state/state_backends.html#the-fsstatebackend

`The FsStateBackend holds in-flight data in the TaskManager’s memory. Upon checkpointing,
it writes state snapshots into files in the configured file system and directory. Minimal
metadata is stored in the JobManager’s memory (or, in high-availability mode, in the metadata
checkpoint).`

发件人: athlon512@gmail.com
发送时间: 2019年8月6日 11:53
收件人: user-zh
主题: Re: Re: Flink RocksDBStateBackend 问题

你说的是memsystem的状态数据存在jm内存中的filesystem是存到文件系统上的



athlon512@gmail.com
发件人: 戴嘉诚
发送时间: 2019-08-06 11:42
收件人: user-zh
主题: Re: Flink RocksDBStateBackend 问题
FileSystem 我记得是存储的大小是不能超过tm的内存还是jm的内存,而rocksdb上存储的数据是可以无限的,不过相对来说,
FileSystem的吞吐就会比rocksdb会高
lvwenyuan <lvwenyuan163@163.com> 于2019年8月6日周二 上午11:39写道:
> 请教各位:
>        RocksDBStateBackend
> 中,rocksdb上存储的内如和FileSystem上存储的数据内容是一样的?如果不一样,那么分别是什么呢?感谢回答
>
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message