Many practical computing problems concern large graphs.

Standard examples include the Web graph and various social

networks. The scale of these graphs—in some cases billions

of vertices, trillions of edges—poses challenges to their

efficient processing. In this paper we present a computational

model suitable for this task. Programs are expressed

as a sequence of iterations, in each of which a vertex can

receive messages sent in the previous iteration, send messages

to other vertices, and modify its own state and that of

its outgoing edges or mutate graph topology. This vertexcentric

approach is flexible enough to express a broad set of

algorithms. The model has been designed for efficient, scalable

and fault-tolerant implementation on clusters of thousands

of commodity computers, and its implied synchronicity

makes reasoning about programs easier. Distribution related

details are hidden behind an abstract API. The result

is a framework for processing large graphs that is expressive

and easy to program.

Source: https://kowshik.github.io/JPregel/pregel_paper.pdf