唐老师您好:
         我这里指的是checkpoint时存储数据的file system,这里我用的是HDFS。
        按照老师的说法,我可不可以这样理解(在Flink on yarn 以及 使用 RocksDBStateBackend 的场景下): 
               1.做增量checkpoint的时候,taskmanager默认异步的将数据写入rocksdb和hdfs中(数据是相同的)。
               
当taskmanager异常退出时,会启动另一个taskmanager去做task,那么新起的taskmanager是否会去hdfs上同步数据。
               那么这个rocksdb的意义是在哪里?数据反正HDFS上都有,而且HDFS本身也多副本。
               2.在做savepoint的时候,一般会将数据保存在HDFS上,那么这个是,我的命令是  flink cancel -s  
。做完savepoint就退出,那么这个时候rocksdb还需要去写数据吗?因为做完savepoint,整个任务就结束了。


  望解答,谢谢老师!







在 2019-08-06 13:44:18,"Yun Tang" <myas...@live.com> 写道:
>@lvwenyuan<mailto:lvwenyuan...@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: 戴嘉诚 <a773807...@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).`
>
>发件人: athlon...@gmail.com
>发送时间: 2019年8月6日 11:53
>收件人: user-zh
>主题: Re: Re: Flink RocksDBStateBackend 问题
>
>你说的是memsystem的状态数据存在jm内存中的filesystem是存到文件系统上的
>
>
>
>athlon...@gmail.com
>发件人: 戴嘉诚
>发送时间: 2019-08-06 11:42
>收件人: user-zh
>主题: Re: Flink RocksDBStateBackend 问题
>FileSystem 我记得是存储的大小是不能超过tm的内存还是jm的内存,而rocksdb上存储的数据是可以无限的,不过相对来说,
>FileSystem的吞吐就会比rocksdb会高
>lvwenyuan <lvwenyuan...@163.com> 于2019年8月6日周二 上午11:39写道:
>> 请教各位:
>>        RocksDBStateBackend
>> 中,rocksdb上存储的内如和FileSystem上存储的数据内容是一样的?如果不一样,那么分别是什么呢?感谢回答
>>
>>
>>
>>
>

回复