5 Spark GraphX

1.1 GraphX-Anwendungshintergrund

Referenzlink 1: https://www.cnblogs.com/shishanyuan/p/4747793.html

Referenzlink 2: https://blog.csdn.net/qq_37142346/article/details/82016770

Spark GraphX ​​ist ein Framework für die verteilte Grafikverarbeitung. Es basiert auf der Spark-Plattform und bietet eine einfache, benutzerfreundliche und umfangreiche Benutzeroberfläche für Graph Computing und Graph Mining, die die Nachfrage nach verteilter Grafikverarbeitung erheblich erleichtert.

 

Wie wir alle wissen, gibt es viele Beziehungsketten zwischen Menschen in sozialen Netzwerken wie Twitter, Facebook, Weibo, WeChat usw. Dies sind alles Orte, an denen Big Data generiert wird, die eine Grafikberechnung erfordern, und die aktuelle Grafikverarbeitung besteht im Wesentlichen aus verteilten Grafiken Verarbeitung., Anstatt eigenständige Verarbeitung. Da die zugrunde liegende Ebene von Spark GraphX ​​auf Spark basiert, handelt es sich natürlich um ein verteiltes Grafikverarbeitungssystem.

 

1.2 GraphX-Framework

Beim Entwerfen von GraphX ​​sind sowohl Punktsegmentierung als auch GAS ausgereift, und sie sind in Design und Codierung optimiert, und es wird der beste Gleichgewichtspunkt zwischen Funktion und Leistung gefunden. Wie Spark selbst hat jedes Submodul eine Kernabstraktion. Die Kernabstraktion von GraphX ​​ist Resilient Distributed Property Graph, ein gerichteter Multigraph mit Attributen an Punkten und Kanten. Es erweitert die Abstraktion von Spark RDD. Es gibt zwei Ansichten von Tabelle und Grafik, und es ist nur ein physischer Speicher erforderlich. Beide Ansichten haben ihre eigenen eindeutigen Operatoren, wodurch ein flexibler Betrieb und eine effiziente Ausführung erzielt werden.

 

Schauen wir uns ein einfaches Beispiel für die Diagrammberechnung an:

2.2.2.4 Graph Algorithm Toolkit

GraphX ​​bietet auch eine Reihe von Toolkits für Grafikalgorithmen, mit denen Benutzer Diagramme analysieren können. Derzeit unterstützt die neueste Version 6 klassische Diagrammalgorithmen wie PageRank, Dreieckszahl, größtes verbundenes Diagramm und kürzester Pfad. Der Zweck und Fokus der Code-Implementierung dieser Algorithmen ist die Vielseitigkeit. Wenn Sie die beste Leistung erzielen möchten, können Sie sich auf die Implementierung beziehen, um sie an die geschäftlichen Anforderungen anzupassen. Darüber hinaus ist das Studium dieser Codes ein guter Weg, um die Best Practices für die GraphX-Programmierung zu verstehen.

 

Einführung in Pregel

Pregel ist ein Graph-Computing-Algorithmus und -System, das Google seit 2009 der Öffentlichkeit zur Verfügung stellt. Es wird hauptsächlich zur Lösung von Problemen bei der Berechnung der Graphentheorie in großem Maßstab verwendet, die in einer eigenständigen Umgebung nicht berechnet werden können. Pregel ist weniger ein Algorithmus für das Graph-Computing als vielmehr eine Reihe von Graph-Modell-Verarbeitungslösungen, die aus einer Reihe von Algorithmen, Modellen und Systemdesigns bestehen.

 

1 Knoten (Scheitelpunkt). In Pregel hat jeder Knoten eine global eindeutige ID

2 Kanten (Kante). In Pregel kann jeder Kante ein Attribut zugewiesen werden, bei dem es sich um Informationen wie das Gewicht der Kante handeln kann

3 Nachricht (Nachricht). Nachrichten sind der Kern von Pregels Rechenmodell. Jeder Vertex wird mit einem Nachrichtenwert als aktuellem Status des Vertex im Anfangszustand und jedem nachfolgenden Berechnungsschritt verknüpft. Die Iteration des Algorithmus wird durch die Nachrichten vervollständigt, die zwischen Vertex aneinander gesendet werden.

4 Super-Iteration (Superstep). Ein Superstep ist eine Iteration, die Pregel während der Ausführung des Algorithmus durchführt. Ein Pregel-Berechnungsprozess kann mehrere Supersteps enthalten

5 In Pregel wird Edge im Allgemeinen gerichtet. Gleichzeitig hat der Knoten Vertex auch zwei Zustände, Aktiv und Inaktiv. Wie Sie später sehen können, bestimmt der Status des Knotens, ob einige Algorithmen beendet sind.

 

Wie bereits erwähnt, wird Vertex Statusänderungen aufweisen, und dieses Konzept ist auch sehr einfach:

 

Wenn ein Vertex im vorherigen Schritt keine Nachricht empfangen hat oder der Algorithmus beschließt, keine Nachrichten mehr zu senden, kann er inaktiv werden. In der Pregel-Terminologie wird dies als Abstimmung zum Anhalten bezeichnet

Wenn ein zuvor inaktiver Scheitelpunkt eine neue Nachricht empfängt, wechselt er in der neuen Berechnung in den Status Aktiv

In den meisten Algorithmen bedeutet jeder Vertex, der in den inaktiven Zustand wechselt, dass der Algorithmus beendet ist.

Referenzlink: https://io-meter.com/2018/03/23/pregel-in-graphs/

 

Der Dreieckszählalgorithmus von Graphx TriangleCount wird verwendet, um die Anzahl der Dreiecke zu zählen, in denen sich jeder Scheitelpunkt befindet.

1.1 Einleitung

Das Zählen der Anzahl der Dreiecke im Netzwerkdiagramm kann die Dichte und Qualität des Netzwerks entsprechend der Anzahl der Dreiecke widerspiegeln.

1.2 Anwendungsszenarien

(1) Zur Entdeckung der Gemeinschaft

Zum Beispiel folgen Ihnen auch die Menschen, denen Sie in Weibo folgen, und es gibt viele Dreiecke in Ihrer folgenden Beziehung, die darauf hinweisen, dass die Gemeinschaft stark und stabil ist und alle eng miteinander verbunden sind, wenn eine Person nur vielen Menschen folgt, dies aber nicht bilden ein Dreieck, es bedeutet sozial Die Gruppe ist klein und locker.

(2) Messen Sie die Nähe der Community-Kopplungsbeziehung

Die Anzahl der Dreiecke wird verwendet, um die Nähe der Community als Referenzindikator widerzuspiegeln.

Referenzlink: https://www.jianshu.com/p/4713efaf264a

Ich denke du magst

Origin blog.csdn.net/qq_42198024/article/details/108298459
Empfohlen
Rangfolge