2010-12-16 6 views
1

In einem verteilten System verteilt ein bestimmter Knoten 'X'-Arbeitseinheiten gleichmäßig auf' N'-Knoten (via Socket Message Passing).Verteiltes Systemdesign

Da wir die Anzahl der Worker-Knoten erhöhen, erledigt jeder Knoten seine Arbeit schneller, aber wir müssen mehr Verbindungen einrichten. In einer realen Situation wäre es ähnlich dem Ändern von 10 Knoten in einem Hadoop-ähnlichen System, wobei jeder Knoten 100 GB pro 1.000.000 Knoten verarbeitet, wobei jeder Knoten 1 MB verarbeitet.

  • Welche Auswirkungen hat die Einrichtung von mehr Verbindungen in diesem Fall? Ist das ein großer Aufwand in der poll() Funktion?
  • Was ist der beste Ansatz?

Antwort

3

Klingt wie Sie müssen Amdahl's Law konsultieren.

Zumindest war es, wie ich berechnet, wie viele Maschinen auf einem High-Speed-Switch optimal für meine parallelen Berechnungen waren.

0

Können Sie Ihre Netzwerkkosten messen? Die Zeit, die für die Arbeit mit der Arbeitsmaschine aufgewendet wird, sollte nur einen Teil der Kosten für das Übergeben und Empfangen der Nachricht ausmachen.

Kannst du auch die O-Notation beschreiben, um jedes Worker-Ergebnis in das Master-Ergebnis zu bringen?

Hat Ihr Master Round Robin erwartete Antworten?

BTW - Wenn Ihre Arbeiterknoten schneller fertig sind, aber die CPU-Ressourcen nicht ausreichend nutzen, können Sie einen Design-Kompromiss verpassen?

natürlich könnten Sie die Regel oder die Ausnahme zu einem Gesetz (Argument/veraltete Forschung) sein. ;-)

1

Müssen Sockets und Nachrichten zwischen Supervisor und Worker ausgetauscht werden?

Sie können eine Art von Warteschlangen verwenden, also vermeiden Sie es, den Supervisor zu belasten. Oder ein verteiltes Dateisystem ähnlich HDFS, um die Aufgaben zu verteilen und die Ergebnisse zu sammeln.

Es hängt auch von der Anzahl der Knoten ab, für die Sie die Workers bereitstellen möchten. 1.000.000 Knoten sind eine sehr große Zahl. In diesem Fall müssen Sie die Aufgaben in mehrere Warteschlangen verteilen.

Die Sache, auf die man achten muss, ist, was passiert, wenn alle Knoten ihre Aufgaben gleichzeitig erledigen. Es würde sich lohnen, etwas Variabilität zu schaffen, wenn sie eine neue Aufgabe anfordern können. ZooKeeper (http://hadoop.apache.org/zookeeper/) ist möglicherweise etwas, das Sie auch verwenden können, um die Jobs zu synchronisieren.

Verwandte Themen