Crawler und Solr getrennt: Solr-Cloud?

Keine Scheu, hier darf alles gefragt und diskutiert werden. Das ist das Forum für YaCy-Anfänger. Hier kann man 'wo muss man klicken' fragen und sich über Grundlagen zur Suchmaschinentechnik unterhalten.
Forumsregeln
Hier werden Fragen beantwortet und wir versuchen die Probleme von YaCy-Newbies zu klären. Bitte beantwortete Fragen im YaCy-Wiki http://wiki.yacy.de dokumentieren!

Crawler und Solr getrennt: Solr-Cloud?

Beitragvon fherb » Di Jun 30, 2015 11:51 pm

Hallo!

Vor den Fragen die Ausgangssituation:

Ich bin dabei, zu einem bestimmten Wissensgebiet eine Suchmaschine aufzusetzen, die freeworld natürlich mit unterstütz. Wegen der unterschiedlichen Auslastungen und um die Response auf Suchanfragen zu optimieren, habe ich das System in mehrere System-Teilkomponenten auf verschiedene Rechner getrennt:

Crawling (2 Systeme)
Solr (1 System)
Suchoberfläche (1 System)

Die beiden Crawling-Systeme sollen gleichzeitig auf die Solr-Datenbank arbeiten. Obwohl die Crowlings bei der ersten vollständigen Erfassung der Quellen im Robinson-Modus arbeiten, um keine Rechenzeit zu vergeuden, sammeln sie durch eingeschalteten "support peer-to-peer index transmission (DHT RWI index)" die Informationen, um im nachfolgenen (dauerhaften Modus) die Informationen mit anderen Peers zu teilen. Robinson ist also nur temporär zu Beginn.

Beide Systeme arbeiten auf ein Solr auf einem separaten Rechner.

Um nun die Suche nicht von der Auslastung mit Crawls gar zu sehr abhängig zu machen, wird die Suchseite durch ein weiteres System bereit gestellt, dass auf Solr zugreift (nur lesend). Prinzipiell kenne ich die Infos auf den ganzen Yacy-Webseiten. Sie haben mir schließlich geholfen, die Teilsysteme zum Laufen zu bekommen. Einige Fragen bleiben trotzdem, bevor ich das als dauerhaftes Produktivsystem freigeben möchte:

Fragen:

1) Solr kann man, wie auf den Yacy-Webseiten beschrieben, als einzelnes System aufsetzen oder als Cloud. Wann benötigt man die Cloud-Variante? Schon, wenn ich wie hier mit zwei Crawlern auf eine Solr-Datenbank arbeite? Oder wann sonst? In meinem beschriebenen Fall?

2) Wenn ich einen Crawl auf der ersten Crawing-Maschine starte und einen Tag später (nachdem also schon ordentlich gecrawlt und indiziert wurde) auf dem zweiten System den gleichen Crawl einrichte, um ihn dort ab jetzt aller 6 Stunden auszuführen, dann wird dort offenbar noch mal in aller Tiefe ein Crawling ausgeführt. Ein Fehler? Ich hatte erwartet: Das erste System crawlt in die Tiefe, das zweite System beginnt auf der Startseite und geht nicht tiefer, da bereits alle Seiten vom anderen System in die Solr-Datenbank übertragen wurden. Mein Ziel: Auf dem ersten System erstmalig einen vollständigen Domain-Crawl. Das zweite System prüft nur noch die Startseite aller 6 Stunden und crawlt, was dort neu erscheint. -> Im Moment sieht es so aus, dass beide Systeme alles vollständig crawlen. Obwohl die Seiten bereits vom ersten System im Solr indiziert sind, macht das zweite Crawling-System ein weiteres vollständiges Crawling. Wie ist das richtig? Wie muss das sein? Was mache ich falsch?

3) Die beiden Crawl-Systeme arbeiten auf ein Solr, dass auf einem anderen System installiert ist. Fährt nun das Solr aus einem bestimmten Grund herunter, ist also für die Crawler nicht mehr erreichbar: Was passiert? Was machen die Crawler? Es sieht aus, dass sie nun auf eine lokale (die in YaCy eingebettete Solr-) Datenbank crawlen. Ist das so? Wie kann ich das organisieren, dass die Crawler ihre Information zurückhalten bzw. das Crawling stoppen, bis wieder das Solr am Netz ist? Oder übertragen sie später, wenn die entfernte SOlr-Datenbank wieder online ist, den Inhalt dort hin?

Viele Grüße
Frank
fherb
 
Beiträge: 111
Registriert: Di Nov 26, 2013 10:02 am
Wohnort: Dresden (Germany)

Re: Crawler und Solr getrennt: Solr-Cloud?

Beitragvon Orbiter » Mi Jul 01, 2015 7:30 am

Hallo Frank,

das ist ja eine interessante Konstruktion. Eigentlich ganz nett durchgedacht, nicht ganz so wie ich das als ‚Standard‘ bezeichnen würde aber sollte trotzdem gehen! Also:

1) weiss nicht. SolrCloud ist die Idee von Apache wie man mit Solr skaliert. Ich habe das mal als Auftragsarbeit in YaCy eingebaut. Theoretisch heisst das: so gut skalieren zu können wie man das eben mit Solr kann (unbegrenzt?). Erfahrungen habe ich dazu nur begrenzt. Eines ist sicher: der embedded Solr ist wegen fehledem http traffic sowieso besser als ein externer Solr und auch besser als eine Cloud mit X Shards. Wann X Shards dann doch besser ist und wie groß das X sein muss damit das zutrifft, weiss ich nicht… Das muss man mal durch Erfahrungswerte rausfinden.

2) die beiden YaCys wissen nicht voneinander wie ihre crawls ablaufen. YaCy hat einen Crawl Stack der unabhängig von Solr implementiert ist. Du musst das Problem durch eine Betriebsplanung lösen.

3) Wenn externe Solr nicht antworten merkt das YaCy nur dadurch, dass der http request, der von YaCy nach Solr geht blockiert, weil nichts antwortet. Nach einem Timeout (ich glaube 30 Sekunden) gibt es eine Exception. So weit ich mich erinnere wird das noch zwei mal wiederholt bis dann der Vorgang endgülig versagt. Dann gehen Daten verloren: indexing-push sind futsch und Suchanfragen haben leere Resultate. Den lokalen Solr kannst du übrigens ausschalten, das verhindert nicht die Anreicherung des DHT Indexes, das ist wieder eine weitere Datenstruktur (die du auch ausschalten kannst).
Orbiter
 
Beiträge: 5771
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main

Re: Crawler und Solr getrennt: Solr-Cloud?

Beitragvon fherb » Do Jul 02, 2015 7:41 pm

Hallo Orbiter!

Besten Dank für Deine ausführliche Antwort!

Da ist meine Konstruktion zwar zur Lastverteilung durchdacht, aber hat doch Nachteile. Das hab' ich fast vermutet, dass in dem System mehr Information steckt, als solr für sich genommen speichert.

Wenn ich jetzt lokal von beiden Systemen, die bisher auf das eine Solr gecrawlt haben, den gleichen Suchbegriff gebe, dann bekomme ich in der oberen Statuszeile, in der ich auch die Zahl der Seiten der Treffer angezeigt bekomme, eine unterschiedliche Anzahl von Treffern angezeigt. Obwohl es das gleiche Solr ist und ich eigentlich nichts in Schema, Ranking oder dergleichen von den Grundeinstellungen verändert habe. Das YaCy, was schon mehr gecrawlt hat, scheint auch mehr Treffer zu liefern.

Dann werde ich wohl doch eher von meiner komischen Konstruktion ablassen, Crawling, Datenbank und Such-Seiten-Frontend auf unterschiedliche Systeme zu verteilen.

Viele Grüße
Frank
fherb
 
Beiträge: 111
Registriert: Di Nov 26, 2013 10:02 am
Wohnort: Dresden (Germany)

Re: Crawler und Solr getrennt: Solr-Cloud?

Beitragvon Orbiter » Do Jul 02, 2015 8:28 pm

ich würde das nicht als komische Konstruktion bezeichnen sondern als interessante Konstruktion. Die Unterschiede, die du feststellen kannst, könnten vom RWI-Index her rühren, der für das p2p gedacht ist. Der baut sich bei der Vetreilung im Index ja kontinuierlich ab, ohne das Suchresultate verloren gehen. Solr hat ja ‚nur‘ für das p2p Netz die Metadaten-Datenbank abgelöst, bietet aber selber auch einen Suchindex. wir haben in einem p2p-Index also zwei Indexe. Das kann verwirren, kann aber auch nur eine Statusanzeigeproblematik sein.

Ich finde deine Konstuktion eigentlich schon recht ergonomisch, es verzichtet bei zwei YaCy Instanzen halt auf zwei Solr Indizes sondern hat nur eine. Das ist ja eine tolle Sache. Das es da nun schon mal irritationen geben kann würde ich einfach hinnehmen. Wichtig ist, zu wissen was du für Daten hast und was und wieviel verloren geht - eben nichts. Insgesamt finde ich nichts daran falsch was du da gemacht hast, es ist beobachtenswert.
Orbiter
 
Beiträge: 5771
Registriert: Di Jun 26, 2007 10:58 pm
Wohnort: Frankfurt am Main


Zurück zu Hilfe für Einsteiger und Anwender

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste