checkpoint rocksdb hdfs 如何协调,保证数据不丢失

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

checkpoint rocksdb hdfs 如何协调,保证数据不丢失

Michael Ran
dear all :
            我们checkpoint 信息默认保存在rocksdb上,但是rocksdb 是一个单机系统,性能OK,要做到不丢失还是要备份到hdfs分布式文件系统上。


           问题是:
           1. 如果仅保存在rocksdb,那么单机物理损坏,数据是会丢失的。
           2. 如果仅保存hdfs,那么性能可能跟不上
           3.如果先保存到rocksdb,再定时备份到hdfs,那么是多久备份一次?中间出现物理损坏,还是会出现一端时间的丢失。
           4. 这块的详细设计,和具体流程、场景有合适的文档推荐吗?怎么再性能和数据完整性上做考虑的
Reply | Threaded
Open this post in threaded view
|

Re: checkpoint rocksdb hdfs 如何协调,保证数据不丢失

Congxian Qiu
Hi
   RocksDB 里面存的是 State,Flink 在做 checkpoint 的时候会把 State 备份到 HDFS 上,如果失败的话从
Checkpoint 进行恢复,如果想了解更详细的内容,可以参考文档[1][2] 以及文档里面的链接
[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/stream/state/checkpointing.html
[2]
https://ci.apache.org/projects/flink/flink-docs-release-1.11/learn-flink/fault_tolerance.html

Best,
Congxian


Michael Ran <[hidden email]> 于2020年9月29日周二 上午11:06写道:

> dear all :
>             我们checkpoint 信息默认保存在rocksdb上,但是rocksdb
> 是一个单机系统,性能OK,要做到不丢失还是要备份到hdfs分布式文件系统上。
>
>
>            问题是:
>            1. 如果仅保存在rocksdb,那么单机物理损坏,数据是会丢失的。
>            2. 如果仅保存hdfs,那么性能可能跟不上
>            3.如果先保存到rocksdb,再定时备份到hdfs,那么是多久备份一次?中间出现物理损坏,还是会出现一端时间的丢失。
>            4. 这块的详细设计,和具体流程、场景有合适的文档推荐吗?怎么再性能和数据完整性上做考虑的
Reply | Threaded
Open this post in threaded view
|

Re: checkpoint rocksdb hdfs 如何协调,保证数据不丢失

王冶
In reply to this post by Michael Ran
Hi~ 按你的问题顺序回答如下:
 1. Flink中的RocksDB是支持保存到hdfs的,且支持的非常好,将rocksdb的存储路径设置为hdfs路径即可。
 2.
in-flight的数据是保存在本地磁盘的,仅当checkpoint的时候,才会将本地的状态拷贝到hdfs。而且checkpoint本身不会因为远程拷贝影响计算速度。
 3.
多久备份一次,取决于你配置的checkpoint的间隔。每次checkpoint都会备份&远程拷贝。但请注意,默认配置下checkpoint会在作业停止后删除,这时候你需要手动触发savepoint,你当然也可以在作业运行过程中出发保存savepoint,savepoint的好处是不会随作业停止而删除,且可以让新作业基于savepoint启动,从而实现exactly-once或at-least的语义。
 4. Flink提供多种状态后端,需要根据你的实际场景选择。但对于大状态和高可用场景,推荐rocksdb。具体的推荐还是多读下文档。

文档:
https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/state/state_backends.html#rocksdb-state-backend-details
https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/state/checkpoints.html
https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/state/savepoints.html
https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/state/large_state_tuning.html

祝好,
By Soda


On Tue, 29 Sep 2020 at 11:06, Michael Ran <[hidden email]> wrote:

> dear all :
>             我们checkpoint 信息默认保存在rocksdb上,但是rocksdb
> 是一个单机系统,性能OK,要做到不丢失还是要备份到hdfs分布式文件系统上。
>
>
>            问题是:
>            1. 如果仅保存在rocksdb,那么单机物理损坏,数据是会丢失的。
>            2. 如果仅保存hdfs,那么性能可能跟不上
>            3.如果先保存到rocksdb,再定时备份到hdfs,那么是多久备份一次?中间出现物理损坏,还是会出现一端时间的丢失。
>            4. 这块的详细设计,和具体流程、场景有合适的文档推荐吗?怎么再性能和数据完整性上做考虑的
Reply | Threaded
Open this post in threaded view
|

Re:Re: checkpoint rocksdb hdfs 如何协调,保证数据不丢失

Michael Ran
好的,非常感谢。
在 2020-09-29 14:23:10,"王冶" <[hidden email]> 写道:

>Hi~ 按你的问题顺序回答如下:
> 1. Flink中的RocksDB是支持保存到hdfs的,且支持的非常好,将rocksdb的存储路径设置为hdfs路径即可。
> 2.
>in-flight的数据是保存在本地磁盘的,仅当checkpoint的时候,才会将本地的状态拷贝到hdfs。而且checkpoint本身不会因为远程拷贝影响计算速度。
> 3.
>多久备份一次,取决于你配置的checkpoint的间隔。每次checkpoint都会备份&远程拷贝。但请注意,默认配置下checkpoint会在作业停止后删除,这时候你需要手动触发savepoint,你当然也可以在作业运行过程中出发保存savepoint,savepoint的好处是不会随作业停止而删除,且可以让新作业基于savepoint启动,从而实现exactly-once或at-least的语义。
> 4. Flink提供多种状态后端,需要根据你的实际场景选择。但对于大状态和高可用场景,推荐rocksdb。具体的推荐还是多读下文档。
>
>文档:
>https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/state/state_backends.html#rocksdb-state-backend-details
>https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/state/checkpoints.html
>https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/state/savepoints.html
>https://ci.apache.org/projects/flink/flink-docs-release-1.11/ops/state/large_state_tuning.html
>
>祝好,
>By Soda
>
>
>On Tue, 29 Sep 2020 at 11:06, Michael Ran <[hidden email]> wrote:
>
>> dear all :
>>             我们checkpoint 信息默认保存在rocksdb上,但是rocksdb
>> 是一个单机系统,性能OK,要做到不丢失还是要备份到hdfs分布式文件系统上。
>>
>>
>>            问题是:
>>            1. 如果仅保存在rocksdb,那么单机物理损坏,数据是会丢失的。
>>            2. 如果仅保存hdfs,那么性能可能跟不上
>>            3.如果先保存到rocksdb,再定时备份到hdfs,那么是多久备份一次?中间出现物理损坏,还是会出现一端时间的丢失。
>>            4. 这块的详细设计,和具体流程、场景有合适的文档推荐吗?怎么再性能和数据完整性上做考虑的