För att möta utmaningen att bearbeta snabbt växande graf- och nätverksdata som skapats av moderna applikationer har ett antal distribuerade grafbehandlingssystem uppstått, såsom Pregel och GraphLab. Alla dessa system delar in diagram i partitioner, och använder en "tänk som en vertex" programmeringsmodell för att stödja iterativ graf beräkning. Denna vertex-centrerade modell är enkel att programmera och har visat sig användbar för många grafalgoritmer. Denna modell döljer dock partitioneringsinformationen från användarna, vilket förhindrar många algoritmspecifika optimeringar. Detta resulterar ofta i längre exekveringstid på grund av överdrivna nätverksmeddelanden (t.ex. I Pregel) eller tung schemaläggning overhead för att säkerställa datakonsistens (t.ex. för GraphLab). För att ta itu med denna begränsning föreslår vi en ny "tänk som en graf" programmering paradigm. Under denna grafcentriska modell öppnas partitionsstrukturen upp för användarna, och kan användas så att kommunikation inom en partition kan kringgå det tunga meddelandet passerar eller schemaläggning maskiner. Vi implementerade denna modell i ett nytt system, Giraph++, baserat på Apache Giraph, en öppen källkod implementation av Pregel. Vi undersöker tillämpligheten av den grafcentriska modellen på tre kategorier av grafalgoritmer, och visar dess flexibilitet och överlägsna prestanda, särskilt på väl partitionerade data. Till exempel, på en webbgraf med 118 miljoner hörn och 855 miljoner kanter, den graf-centrerade versionen av ansluten komponent detektion algoritm kör 63X snabbare och använder 204X färre nätverksmeddelanden än dess vertex-centriska motsvarighet.
Giraph++ REF-förstärkt Giraph med en rikare uppsättning API:er för användardefinierade partitioneringsfunktioner så att kommunikation inom en enda partition kan kringgås.
From "Think Like a Vertex" to "Think Like a Graph"
{'venue': 'PVLDB', 'journal': 'PVLDB', 'mag_field_of_study': ['Computer Science']}