  Several organizations, like social networks, store and routinely analyze
large graphs as part of their daily operation. Such graphs are typically
distributed across multiple servers, and graph partitioning is critical for
efficient graph management. Existing partitioning algorithms focus on finding
graph partitions with good locality, but disregard the pragmatic challenges of
integrating partitioning into large-scale graph management systems deployed on
the cloud, such as dealing with the scale and dynamicity of the graph and the
compute environment.
  In this paper, we propose Spinner, a scalable and adaptive graph partitioning
algorithm based on label propagation designed on top of the Pregel model.
Spinner scales to massive graphs, produces partitions with locality and balance
comparable to the state-of-the-art and efficiently adapts the partitioning upon
changes. We describe our algorithm and its implementation in the Pregel
programming model that makes it possible to partition billion-vertex graphs. We
evaluate Spinner with a variety of synthetic and real graphs and show that it
can compute partitions with quality comparable to the state-of-the art. In
fact, by using Spinner in conjunction with the Giraph graph processing engine,
we speed up different applications by a factor of 2 relative to standard hash
partitioning.
