4.9.3 Untere Schranke f ¨ur F∞

Werbung
4.9.3 Untere Schranke für F∞
Satz 4.51:
Sei 0 ≤ ε < 1/3 und 0 ≤ δ < 1/2. Jeder randomisierte
r -Runden-Datenstromalgorithmus, der auf Datenströmen
der Länge n ∈ {0, . . . , 2m} eine (ε, δ)-Approximation von F∞
berechnet, benötigt Speicherplatz (m/r ).
480
Beweis:
Idee: Codiere DISJm in F∞ hinein.
x = {x1 , . . . , xm1 } −→ ax = (x1 , . . . , xm1 );
y = {y1 , . . . , ym2 } −→ ay = (y1 , . . . , ym2 );
a := (ax , ay ).
x ∩ y = ∅ ⇒ F∞ (a) = maxi fi (a) = 1 =: L;
x ∩ y 6 = ∅ ⇒ F∞ (a) = 2 =: H.
Technik anwendbar für ε < (H − L)/(L + H) = 1/3.
Benutze untere Schranke (m) für randomisierte
Kommunikationskomplexität von DISJm .
481
4.9.4 Untere Schranke für Fk , k > 2
Einfache Reduktion von DISJm funktioniert nicht,
da bestenfalls (H − L)/(L + H) = 2(1/m) (→ Skript).
Idee: Codiere DISJt,m in Fk hinein.
Spieler i produziert Teildatenstrom ax (i) mit Elementen
seiner Menge x (i) . a := (ax (1) , . . . , ax (t) ), Länge maximal tm.
• DISJt,m x (1) , . . . , x (t) = 1:
Fk (a) = |x (1) | + · · · + |x (t) | ≤ m =: L.
• DISJt,m x (1) , . . . , x (t) = 0:
Fk (a) ≥ t k =: H.
Dann:
tk − m
H −L
= k
.
L+H
t +m
482
Wähle t so, dass t k = (1 + 3ε)m, dann
ε<1/3 3εm
H −L
tk − m
3εm
>
= k
= ε.
=
L+H
2m + 3εm
3m
t +m
1-Runden-Datenstromalgorithmus mit WorstcaseSpeicherplatz s liefert t-Spieler-Einweg-Protokoll mit
höchstens (t − 1)s Bits Kommunikation.
Mit unterer Schranke für DISJt,m , t = 2 m1/k :
(t −1)s =  m/t 1+γ ⇒ s =  m/t 2+γ =  m1−(2+γ )/k .
Benötigte Datenstromlänge höchstens
tm = ((1 + 3ε)m)1/k m
ε<1/3
≤
(2m)1+1/k .
483
Satz 4.52:
Sei 0 ≤ ε < 1/3, 0 ≤ δ < 1/2, γ > 0 und k > 2. Jeder
randomisierte 1-Runden-Datenstromalgorithmus,
der
1+1/k
auf Datenströmen der Länge n ∈ 0, . . . , (2m)
eine (ε, δ)-Approximation von
Fk berechnet, benötigt
1−(2+γ
)/k
Speicherplatz  m
.
484
4.9.5 Untere Schranke für
Häufigkeitsmomente mit D ELETEs
Betrachte Variante des Problems aus Abschnitt 4.6.4
für Fk -Berechnung auf Datenbank-Relationen:
I NSERT- und D ELETE-Operationen, will Fk auf resultierenden
Häufigkeiten. D ELETE immer erlaubt, aber ohne Auswirkung,
falls aktuelle Häufigkeit für Element 0.
Satz 4.53:
Sei 0 ≤ ε < 1 und 0 ≤ δ < 1/2. Jeder randomisierte
r -Runden-Datenstromalgorithmus, der für das modifizierte
Fk -Problem auf Datenströmen der Länge n ∈ {0, . . . , 2m}
eine (ε, δ)-Approximation berechnet benötigt Speicherplatz
(m/r ).
485
Beweis:
Codiere DISJm in das Problem hinein.
Mengen x, y ⊆ {1, . . . , m} gegeben.
Datenbankrelation mit Attributswerten aus {1, . . . , m}.
• Datenstrom ax : Für alle i ∈ x: I NSERT (i).
• Datenstrom ay : Für alle i ∈ y : D ELETE (i).
Sei a := (ax , ay ).
Sei v = (v1 , . . . , vm ) ∈ {−n, . . . , n}m durch
Update-Operationen resultierender Vektor.
486
Für i = 1, . . . , m:
xi : yi : vi :
0 0 0
⇒ vi = [xi ∧ yi = 1].
0 1 0
1 0 1
1 1 0
Damit:
Fk (a) =
m
X
[xi ∧ yi = 1]k =
i=1
_
xi yi = ¬ DISJm (x, y ).
1≤i≤m
x ∩ y = ∅ ⇒ Fk (a) = 0 =: L;
x ∩ y 6 = ∅ ⇒ Fk (a) = 1 =: H.
(H − L)/(L + H) = 1 > ε, Technik anwendbar.
487
5. Peer-to-Peer-Netze
Übersicht:
5.1
5.2
5.3
5.4
Einleitung
Consistent Hashing
Chord
Kademlia
488
5.1 Einleitung
Zwei grundlegende Prinzipien zur Organisation
des Zugriffs auf verteilte Ressourcen:
• Client-Server:
– Wenige zentrale Server, die Ressourcen bereitstellen;
– viele Clients, die Ressourcen in Anspruch nehmen.
Aufwand für Hardware und Bandbreite
konzentriert bei Servern.
• Peer-to-Peer (P2P):
– Gleichgestellte Netzknoten (Peers), die sowohl Clientals auch Server-Rolle übernehmen.
– Knoten benutzen alle zu Netz passende Software
(üblicherweise auch Client, besser vielleicht Servent).
Standard-PCs, Aufwand für Bandbreite verteilt.
489
P2P-Netze – Anwendungen:
Populär: Tauschbörsen“ (file sharing)
”
• Aktuell ca. 10 Mio. Teilnehmer weltweit
in verschiedenen Netzen.
• 2006: Anteil am Internet-Datenverkehr in Deutschland
30 % (tagsüber) bzw. 70 % (nachts).
• Verbreitetste Netze: BitTorrent, eDonkey.
(Quelle: www.slyck.com)
Weitere (legalere) Anwendungen:
• Ausfallsichere verteilte Speicherung von Daten.
• Verteilung von großen Datenmengen an viele Nutzer
(z. B. Linux-Distributionen, TV-Live-Streams).
490
P2P-Technik:
Üblicherweise realisiert als Overlay-Netz auf der
Anwendungsschicht, basierend auf TCP oder UDP
(also analog z. B. zu WWW/HTTP).
Zu lösende Probleme:
• Netzaufbau und -verwaltung ohne zentrale Instanz?
(Dynamik: Häufige An-/Abmeldungen von Knoten,
spontane Ausfälle von Knoten möglich.)
• Wie findet man Knoten, die bestimmte Ressourcen
(Dateien) anbieten?
Skalierbarkeit:
Ressourcenaufwand für einzelne Knoten darf nur moderat
(sublinear) in Anzahl Knoten wachsen.
491
Einteilung und Historie:
Nach Netztopologie:
• Zentral (Index-Server):
Napster (1999-2001, in urspr. Form eingestellt).
• Dezentral:
Gnutella (2000).
• Hybridformen:
Gnutella 0.6 und Gnutella2 (2002),
eDonkey (2000–2006, Einstellung offizielle Website),
FastTrack (2001, z. B. KaZaA-Client).
Aktuelle Themen:
Verschlüsselung, Anonymisierung, P2P-Streaming.
492
Einteilung und Historie (Forts.):
Nach Strategie für Netzverwaltung:
• Unstrukturiert:
Neue Knoten verbinden sich beliebig mit bereits
existierenden. Suche typischerweise ineffizient.
Beispiel: Gnutella.
• Strukturiert:
Linkstruktur durch Protokoll geregelt → effiziente Suche.
Außerdem theoretische Gütegarantien.
Consistent Hashing / Distributed Hash Tables (1997).
Beispiele: CAN, Chord (2001), Kademlia (2002).
Auch in aktuellen P2P-Clients, z. B. eMule, BitTorrent.
493
5.1.1 Napster
• Client meldet angebotene
MP3-Dateien an zentralen
Index-Server.
• Suchanfrage: Server liefert
– Nickname von Client und
Dateinamen;
– Nickname →
IP-Adresse.
• Daten lagern nur auf Clients,
Transfer zwischen diesen
ohne Server.
IndexServer
Clients
494
Vorteil:
Suche nach Musikstück erfordert nur jeweils konstante
Anzahl Botschaften zu/von Server (konstant bezüglich
Gesamtanzahl Knoten im Netz).
Nachteile:
• Mangelnde Ausfallsicherheit, verletztlich gegenüber
Angriffen (Server als single point of failure“).
”
• Schlechte Lastverteilung:
Benötigte Hardware und Bandbreite für Server
wächst linear in Anzahl Knoten.
Skalierbarkeit für zentralen Server nicht gegeben.
495
5.1.2 Gnutella 0.4:
Dezentral und unstrukturiert.
• Client benötigt IP-Adresse + Port von mindestens
einem aktiven Peer (mitgeliefert / Internet).
• Verbindung über TCP (+ Gnutella).
• Daten bei den Peers gelagert, Austausch über HTTP.
Spezielle Datenpakete (Deskriptoren):
• P ING/P ONG : Suche nach aktiven Peers.
• Q UERY/Q UERY H IT: Suche nach Daten.
• P USH: Datenübertragung durch Firewall.
Für Suche nach aktiven Peers oder Daten:
Flutung des Netzes / Broadcast.
496
Suche nach Daten:
• Deskriptoren haben eindeutige ID (Hashcode),
Felder TTL“ (Time to live) und Hops“.
”
”
• Vor Weiterleitung von Deskriptor: TTL--, Hops++.
Deskriptoren mit TTL = 0 nicht weiterleiten.
• Mittels ID: Deskriptor nur einmal pro Knoten weiterleiten.
Routing von Q UERY-Deskriptor:
ttl = 3,
hops = 1
497
Suche nach Daten:
• Deskriptoren haben eindeutige ID (Hashcode),
Felder TTL“ (Time to live) und Hops“.
”
”
• Vor Weiterleitung von Deskriptor: TTL--, Hops++.
Deskriptoren mit TTL = 0 nicht weiterleiten.
• Mittels ID: Deskriptor nur einmal pro Knoten weiterleiten.
Routing von Q UERY-Deskriptor:
ttl = 2, Treffer!
hops = 2
ttl = 2,
hops = 2
497
Suche nach Daten:
• Deskriptoren haben eindeutige ID (Hashcode),
Felder TTL“ (Time to live) und Hops“.
”
”
• Vor Weiterleitung von Deskriptor: TTL--, Hops++.
Deskriptoren mit TTL = 0 nicht weiterleiten.
• Mittels ID: Deskriptor nur einmal pro Knoten weiterleiten.
Routing von Q UERY-Deskriptor:
ttl = 1,
hops = 3
ttl = 1,
hops = 3
ttl = 1,
hops = 3
497
Suche nach Daten:
• Deskriptoren haben eindeutige ID (Hashcode),
Felder TTL“ (Time to live) und Hops“.
”
”
• Vor Weiterleitung von Deskriptor: TTL--, Hops++.
Deskriptoren mit TTL = 0 nicht weiterleiten.
• Mittels ID: Deskriptor nur einmal pro Knoten weiterleiten.
Routing von Q UERY H ITS-Deskriptor:
ttl = 2,
hop = 1
497
Suche nach Daten:
• Deskriptoren haben eindeutige ID (Hashcode),
Felder TTL“ (Time to live) und Hops“.
”
”
• Vor Weiterleitung von Deskriptor: TTL--, Hops++.
Deskriptoren mit TTL = 0 nicht weiterleiten.
• Mittels ID: Deskriptor nur einmal pro Knoten weiterleiten.
Routing von Q UERY H ITS-Deskriptor:
ttl = 1,
hop = 2
497
Vorteile:
Dezentral, einfache An-/Abmeldung von Knoten.
Nachteile:
• Für zu kleine TTL-Werte nur Teile des Netzes erreichbar.
(Original-Client: maximal 4 Verbindungen, TTL = 5.)
• Anzahl Botschaften bei P ING / Q UERY =
Anzahl Kanten im (erreichten Teil-) Graphen.
Gesamtbandbreite für Verwaltung wächst linear
(konstanter Grad) oder sogar superlinear in Knotenanzahl.
• Flaschenhälse durch langsame Knoten.
498
5.1.3 Gnutella 0.6, FastTrack:
Hybridform, semi-dezentral.
Hierarchische Einteilung in Ultrapeers und Blätter.
• Blätter: Nur verbunden mit Ultrapeers.
• Ultrapeers:
– Serverartig, u. a. hohe
Bandbreite;
– alleine zuständig für Routing;
– Skizze eines Index für
Daten in ihren Blättern
(Query Routing Protocol, QRP).
Ultrapeers
Blätter
Scheinbar bessere Skalierbarkeit, aber Suche
nach wie vor nicht besonders effizient.
499
5.2 Consistent Hashing
Arbeit: Karger u. a. (1997).
Motivation:
Hot Spots“ im Internet: Server, die durch populäre
”
”
Downloads“ überlastet werden (z. B. Fußball-WM,
neue Linux-Distribution etcpp.)
Abhilfe:
Web-Caches, verteilte Kopien der Seiten.
Zuordnung von Seiten auf Caches?
Idee: Lastverteilung durch Hashing.
500
Beispiel:
Buckets
Hashfunktion x 7 → x mod 4
3
2
1
0
2
3
4
9 10 12 17 19
Daten
501
Beispiel:
Hashfunktion x 7 → x mod 5
Buckets
4
3
2
1
0
2
3
4
9 10 12 17 19
Daten
Beobachtung:
Bei Update fast alle Objekte auf neue Buckets gehasht. : – (
501
Grundlegende Operationen:
• I NITIALIZE.
• J OIN (v ):
Erzeugt neuen Knoten in Netz,
dem Knoten v bereits angehört.
• L EAVE (v ):
Löschen von Knoten v .
• L OOKUP (k ):
Liefere Knoten mit Schlüssel k oder nicht vorhanden“.
”
Natürlich auch Einfügen/Ändern von Daten,
aber dazu im Wesentlichen L OOKUP-Operation.
502
Entwurfsziele / Komplexitätsmaße:
Anzahl Knoten sei n, Anzahl Daten d.
Oh-Notation bezüglich n.
• Speicherplatz pro Knoten:
Sublinear in n, idealerweise O(1).
• Balance (Lastverteilung):
Idealerweise höchstens c · d/n, c ≥ 1 Konstante.
• Rechenzeit für Operationen:
J OIN, L EAVE und L OOKUP in sublinearer Zeit,
idealerweise auch O(1).
Außerdem:
– Ausfallsicherheit;
– Behandlung mehrerer J OINs / L EAVEs zur gleichen Zeit.
503
Consistent Hashing – Prinzip:
0
1
Hashe Knoten und Daten unabhängig auf [0, 1].
Daten werden an nächstgelegenem“ Knoten gespeichert.
”
Nach J OIN-Operation:
0
1
504
Consistent Hashing – Prinzip (Forts.):
• J OIN: Aufteilung des Gebietes, für das Knoten zuständig.
• L EAVE : Verschmilz Gebiet mit passenden von übrig
bleibenden Knoten.
• L OOKUP :
– Irgendwie sicherstellen, dass von aktuellem Punkt
solcher gefunden werden kann, der Punkt von
gesuchtem Datum näher liegt.
– Halbierung des Abstandes → logarithmische Suchzeit.
Abstandsmaße:
• Chord: Abstand auf Kreis der Länge 1.
• CAN: Abstand auf Einheitstorus in Rd .
• Kademlia: Binärwert von XOR(ID1 , ID2 ).
505
Herunterladen