  The success of Google's Pregel framework in distributed graph processing has
inspired a surging interest in developing Pregel-like platforms featuring a
user-friendly "think like a vertex" programming model. Existing Pregel-like
systems support a fault tolerance mechanism called checkpointing, which
periodically saves computation states as checkpoints to HDFS, so that when a
failure happens, computation rolls back to the latest checkpoint. However, a
checkpoint in existing systems stores a huge amount of data, including vertex
states, edges, and messages sent by vertices, which significantly degrades the
failure-free performance. Moreover, the high checkpointing cost prevents
frequent checkpointing, and thus recovery has to replay all the computations
from a state checkpointed some time ago.
  In this paper, we propose a novel checkpointing approach which only stores
vertex states and incremental edge updates to HDFS as a lightweight checkpoint
(LWCP), so that writing an LWCP is typically tens of times faster than writing
a conventional checkpoint. To recover from the latest LWCP, messages are
generated from the vertex states, and graph topology is recovered by replaying
incremental edge updates. We show how to realize lightweight checkpointing with
minor modifications of the vertex-centric programming interface. We also apply
the same idea to a recently-proposed log-based approach for fast recovery, to
make it work efficiently in practice by significantly reducing the cost of
garbage collection of logs. Extensive experiments on large real graphs verified
the effectiveness of LWCP in improving both failure-free performance and the
performance of recovery.
