  Many real-world systems, such as social networks, rely on mining efficiently
large graphs, with hundreds of millions of vertices and edges. This volume of
information requires partitioning the graph across multiple nodes in a
distributed system. This has a deep effect on performance, as traversing edges
cut between partitions incurs a significant performance penalty due to the cost
of communication. Thus, several systems in the literature have attempted to
improve computational performance by enhancing graph partitioning, but they do
not support another characteristic of real-world graphs: graphs are inherently
dynamic, their topology evolves continuously, and subsequently the optimum
partitioning also changes over time.
  In this work, we present the first system that dynamically repartitions
massive graphs to adapt to structural changes. The system optimises graph
partitioning to prevent performance degradation without using data replication.
The system adopts an iterative vertex migration algorithm that relies on local
information only, making complex coordination unnecessary. We show how the
improvement in graph partitioning reduces execution time by over 50%, while
adapting the partitioning to a large number of changes to the graph in three
real-world scenarios.
