You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by Marius Melzer <ma...@rasumi.net> on 2016/03/03 11:34:32 UTC

Re: Incremental checkpoints for Flink

Hi everyone,

Asterios told me that you in the meantime might already have started
planning/implementing incremental checkpoints and that it might be too
late for me to chose it as a topic for my diploma thesis. Is that the
case? If yes, is there a similar topic that I could work on?

Yours,
Marius

On 21.12.2015 13:04, Paris Carbone wrote:
> Hi Marius,
> 
> This is a pretty good and quite challenging topic for a thesis! Your thoughts are pretty much aligned with strategies that we have discussed in the past.
> There are some initial steps in the makings towards that direction. For example, Aljoscha proposed specialized operator state (KVState) types earlier this month (e.g. Maps, Lists) that can potentially support incremental snapshotting.  I think that the incremental snapshotting strategy fits pretty well with mutable backend storages (e.g. sql databases, kv stores etc). From a quick look, option I is close to what most of us have in mind I guess. The second option is quite tricky since it is not always possible to define what a “diff” is.
> 
> If you want to get a more strict overview of how the snapshotting mechanism works you can take a look at the arXiv paper [1] we submitted earlier this year, but also blogs, docs [2,3] and technical presentations [4] on that subject.
> 
> In case you decide to go for this topic it will be good to check the implementation of the current state coordination and sync with us on what is the best way to proceed. The CheckpointCoordinator is a good starting point [5]. I would also be happy to co-supervise you or direct you if you want!
> 
> cheers
> Paris
> 
> 
> [1] http://arxiv.org/abs/1506.08603
> [2] https://ci.apache.org/projects/flink/flink-docs-master/internals/stream_checkpointing.html
> [3] http://data-artisans.com/high-throughput-low-latency-and-exactly-once-stream-processing-with-apache-flink/
> [4] http://www.slideshare.net/ParisCarbone/tech-talk-google-on-flink-fault-tolerance-and-ha
> [5] https://github.com/apache/flink/blob/55fd5f32d7ef0292a01192ab08456fae49b91791/flink-runtime/src/main/java/org/apache/flink/runtime/checkpoint/CheckpointCoordinator.java
> 
> 
> On 19 Dec 2015, at 17:04, Marius Melzer <ma...@rasumi.net>> wrote:
> 
> Hello everyone,
> 
> in order to look for a subject for my diploma thesis, I was at the Flink
> Forward conference in October. I talked to Aljoscha and some others
> there and after the Fault Tolerance talk on day 2 I arrived at the idea
> that an incremental checkpointing of the state of a process when a
> barrier arrives would probably be a nice feature for Flink and a good
> topic for my thesis. This would espescially be interesting for very
> large, e.g. key-value based, states that are necessary for scenarios
> like decentralised material views ([1], [2]). Independently, Asterios
> from the TU Berlin suggested to me the same topic when I met him. This
> is nothing new, e.g. Apache Samza does incremental backup of internal
> state as well by writing every change to a special Kafka topic from
> which it can be restored when something fails. The approach for Flink
> would rather be an adaption of the current checkpointing mechanism.
> 
> So my main questions are:
> * would incremental checkpoints be an appreciated change and do you
> think it would fit a diploma thesis by the effort that's necessary?
> * is there already someone working in this area?
> 
> I already put some initial thoughts into how it might be possible to
> achieve the goal:
> 
> 
> How to checkpoint:
> (I) Memorize which changes have been made after last checkpoint
>  - Pro: Lightweight solution, since only the things that changed need
> to be compressed and transfered
>  - Contra: You would want to support this not only for each "state
> variable" but also inside them, e.g. for lists, key-value structures,
> everything. Unfortunately there doesn't seem to be the possibility to
> observe changes made on plain java collections or objects in general (or
> is there?). So you would need to use a different collection library or a
> wrapper around the existing java standard ones.
>  - I could imagine the checkpointing somehow like this:
>    (1) The programmer of the transformation (with state) uses for the
> OperatorState a (wrapped) collection/other type that implements a
> certain interface (e.g. "IncrementallyCheckpointed") that demands
> something like a changesSinceLastCheckpoint() function
>    (2) The flink runtime would check if the state is implementing
> IncrementallyCheckpointed and if yes, calls the
> changesSinceLastCheckpoint() function.
>    (3) There would be the need to differentiate between "regular/full"
> checkpoints of a state and "incremental" ones when transferring the
> checkpoint to the backup/checkpoint server.
> 
> (II) Keep last state and make a diff (preferably with the already
> serialised checkpoint):
>  - Pro: Much easier solution, doesn't need wrapping or adapting of
> collections or other types, very general approach, the transferred data
> shouldn't be more than in case (I) - maybe in some cases even less
>  - Contra: Would usually almost double the memory needs of the
> transformation, for large collections this would also mean quite some
> processing effort for computing the diff
> 
> (III?) Is there another kind of approach you could imagine?
> 
> Which parts need change:
>  - The checkpointing of the transformation state (but not the restoring
> of the state, this stays the same)
>  - The protocol of how to transfer the checkpoints needs at least meta
> data (full/normal checkpoint vs. incremental)
>  - The checkpoint server needs to be able to update its current state
> from the diffs/changes it receives
> 
> 
> I would really appreciate help and assessment of these ideas and the
> general subject. Also, if someone could give me a quick overview over
> the details of the current checkpointing (and which parts of the code
> are worth exploring), I'd be happy about that too!
> 
> Thanks in advance,
> Marius
>