Konsolidierung von Blobs

Ideen und Vorschläge sind willkommen.

Konsolidierung von Blobs

Beitragvon PCA42 » Mi Feb 17, 2010 10:09 pm

Ich versuch die Idee hier nochmal sauber aufzubauen, da sich ja Sixcooler derzeit mit dem Thema "Merge" intensiv befasst.

Im Augenblick gibt es zwei getrennte Prozesse: Einmal den Merge von Blobs und den Konsolidierungslauf von Blobs, die älter als ein Monat sind (Merge mit sich selbst).
Diese beiden Prozesse würde ich zusammenführen wollen.

Beispiel:
maximale Blob-Größe 2000 MB; Dateien neuBlob1 700 MB, neuBlob2 800 MB, altBlob 1500MB
Hier werden in der letzten Mergestufe neuBlob1 und neuBlob2 zusammengeführt. Um aber die maximale Größe zu nutzen und gleichzeitig eine Konsolidierung der alten Blobs zu bewirken wird zusätzlich altBlob mit einsortiert. Dabei wird eine Datei von 2000 MB und eine von 1000 MB erstellt (abzüglich Luft dank DHT). Die 1000 MB-Datei wäre dabei sogar ein Kandidat für den nächsten anstehenden großen Merge.

Vorteile:
Die Daten durchlaufen einen sehr langsamen Bubble-Sort, welcher dafür sorgen sollte, dass die Worte zusammengeführt werden. Die maximale Datei-Größe wird besser ausgeschöpft.

Nachteil:
Das Einlesen von drei Dateien und gleichzeitige Schreiben einer vierten Datei ist nicht sonderlich performant. Aber der Unterschied zu zwei Dateien lesen und eine Dritte schreiben wahrscheinlich nicht riesig.
Auch das reine Sortieren der Daten in von der CPU-Zeit her aufwendiger. Diese Performance-Nachteile sind jedoch an dieser unkritischen Stelle meines Erachtens zu verkraften.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home

Re: Konsolidierung von Blobs

Beitragvon Orbiter » Mi Feb 17, 2010 10:41 pm

die bisherige Merge-Strategie hatte nicht zum Ziel die maximale Datei-Größe auszuschöpfen sondern die Anzahl der Merge-Vorgänge und der einhergehenden IO-Last zu minimieren. Durch die Bestimmung der Start des Vorgangs bei der Bemessung der Größen (sollen immer doppelt so groß werden) kommt es zu einer logarithmischen Anzahl von Mergevorgängen entsprechend linearem Anstieg der Datenmenge. Das ist denke ich optimal.
Wenn man viele kleine BLOBs hat könnte es aber tatsächlich effektiv sein viele auf einmal zu mergen. Das Ziel ist es aber die Menge an BLOBs beständig klein zu halten.
Orbiter
 
Beiträge: 5792
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Konsolidierung von Blobs

Beitragvon PCA42 » Do Feb 18, 2010 5:59 am

Die Anzahl der Mergevorgänge sollte durch diese Änderung nicht ansteigen, es wird ja "nur" eine Datei mehr mit reingenommen. Eine höhere IO-Last wird dabei zweifelsohne entstehen. Als Vorteil sollte jedoch auch zu merken sein, dass durch die Sortierung die Anzahl der Worte pro Blob sinkt. Das sollte wieder Arbeitsspeicher bringen, wie wenn ich die Blob-Größe erhöhe. Und Arbeitsspeicher ist bei Yacy immer gefragt.
PCA42
 
Beiträge: 621
Registriert: Mi Jan 23, 2008 4:19 pm
Wohnort: @Home


Zurück zu Wunschliste

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast