Ich bewerte ein paar verschiedene Möglichkeiten, um eine Analyseanwendung mit einer Open-Source-Technologie zu betreiben. Eine der Optionen ist die Verwendung von ElasticSearch, obwohl ich keine Beispiele von Unternehmen finden konnte, die es für große Implementierungen von Analysen verwenden, daher meine Frage hier.
Welche Grenzen (wenn überhaupt, oder wäre es möglich) für Datensätze von 1B-10B-Punkten hätte ElasticSearch? Zum Beispiel mit einem Feature-Set wie Google Analytics, mit.
Hier ist ein Nutzer, der anscheinend Analysen für große Datenmengen durchführt - Ссылка - und eine Beschreibung dessen, was sie tun tun, einschließlich der Nachteile.
Mit Elasticsearch gibt es keine schwarz-weiße Antwort auf eine Frage, die so offen ist wie Ihre. Die Menge an Datensätzen ist nicht alles: wie viel Plattenplatz wir reden, wie viele Knoten, wie viele Indizes, die Anzahl der Shards für jede, welche Art von Analysen Sie benötigen, Hardware-Spezifikationen usw. 2 Dinge sind sicher von der Daten, die Sie erwähnt haben: Sie benötigen dedizierte Master-Knoten und vor allem gute Client-Knoten und abhängig von Abfragen und der Anzahl der gleichzeitigen Suchen werden Sie mehr oder weniger benötigen.
In Elasticsearch 5 heißt der Client-Knoten koordinierender Knoten , hat aber dieselbe Rolle. Eine Einschränkung, die ich mir vorstellen kann, ist der Heap / RAM-Speicher eines solchen koordinierenden Knotens. Der Heap eines Elasticsearch-Knotens sollte nicht auf größer als ~ gesetzt werden 30 GB aufgrund der längeren Speicherbereinigungszyklen der JVM (größerer zu reinigender Speicher, mehr Zeit, mehr unbrauchbar für den Knoten). Während GC läuft nichts anderes auf dieser JVM. Sie könnten also durch die Größe des Speichers begrenzt sein.
Ich sagte, dass Sie wahrscheinlich Knoten koordinieren müssen, weil schwere Aggregationen (was wahrscheinlich das am häufigsten verwendete Feature in einer Analyseplattform ist) CPU und Speicher in der letzten Phase einer Abfrage verwenden werden, in der die Ergebnisse aller Shards gesammelt werden beteiligt und führt eine abschließende Sortierung und Aggregation durch. Daher benötigt es mehr Speicher als ein normaler Datenknoten nur für Aggregationen.
Ich bezweifle jedoch, dass eine einzelne Aggregation so viele GB Speicher verwenden wird, aber theoretisch könnte sie sie verwenden, wenn die verwendete Abfrage / Aggregation rücksichtslos aufgebaut ist. Abhängig von der Anzahl gleichzeitiger Suchvorgänge Es gibt und wie viel Speicher sie verwenden Sie möglicherweise mehr oder weniger koordinierende Knoten so dass die GC-Zyklen sind nicht sehr häufig.
Unterm Strich : Ich denke, das ist möglich, aber es ist ein gesunder Menschenverstand erforderlich (siehe meinen Kommentar über rücksichtslose Aggregationen) und einige so realitätsnah wie möglich Schätzungen bezüglich der Belastung.
Google Analytics-Pros:
Google Analytics Nachteile:
ElasticSearch Pros:
ElasticSearch Nachteile:
Tags und Links elasticsearch scalability analytics