2016-05-18 17 views
0

Ich beginne gerade in Elasticsearch und Hadoop zu graben. Ich bin etwas verloren bei diesen beiden Konzepten. Ich fand Elasticsearch ist 'immer' (wahrscheinlich durch mein begrenztes Wissen voreingenommen), sprach mit dem Hadoop-Ökosystem (HDFS, Spark, HBase, Hive usw.). Zuerst dachte ich, dass Elasticsearch Teil des Hadoop-Ökosystems ist, aber es sieht so aus, als hätte ich mich geirrt.Elasticsearch und Hadoop?

Wenn ich eine Aufgabe habe, eine Suchmaschine zu implementieren, reicht es aus, nur Elasticsearch für die Indizierung und Speicherung der Daten zu haben. Gibt es Gründe, Hadoop für diese Aufgabe zu nutzen? Wenn wir sowohl HDFS als auch Elasticsearch verwenden, um die Daten zu speichern, bedeutet dies, dass wir die Daten doppelt in zwei Formaten gespeichert haben (einen für HDFS und einen für Elasticsearch)?

Antwort

2

Elasticsearch ist eine verteilte Volltext-Suchmaschine. Es funktioniert alleine. Wenn Sie es als Suchmaschine verwenden möchten, können Sie es eigenständig verwenden. Es besteht keine direkte Beziehung zwischen Elasticsearch und Hadoop. Aber Sie können sie zusammen verwenden. Wenn Sie bereits hadoop verwenden und Ihren Daten Suchfunktionen hinzufügen möchten, können Sie Ihre Daten auf elasticsearch indizieren und sie von hadoop aus abfragen. Es gibt ein Produkt für diesen Zweck: ES-Hadoop

0

Die Stärke von Elasticsearch ist die Suche - wenn Sie nur eine Suchmaschine implementieren möchten, können Sie dabei bleiben. Wo die Macht von etwas wie Spark und/oder Hadoop kommt, ist, wenn Sie große Aggregationen oder Berechnungen auf Aufzeichnungen oder Rückgaben in der Größenordnung von ~ 100k oder mehr durchführen müssen. Dies ist der Punkt, an dem Elasticsearch langsam ist (abhängig von der Größe und den Spezifikationen Ihres Clusters). Für fortgeschrittene Analysen, Aggregationen und maschinelle Lernaufgaben würde ich Spark (für seine Geschwindigkeit) nutzen und diese Jobs dort ausführen, die Ausgabe an Elastic zurückgeben, um es mit Kibana oder einem anderen Dienstprogramm zu visualisieren.