Cloud-natives Open-Source-Echtzeit-Streaming beliebiger Daten zu Apache Solr

Sie lernen, wie Sie Open Source Streaming nutzen können, um Daten in großem Umfang in Apache Solr einzuspeisen.

Mithilfe von Apache Pulsar und Apache NiFi können wir jedes Dokument in Echtzeit und in großem Umfang parsen. Wir erhalten eine Vielzahl von Dokumenten über Cloud-Speicher, E-Mail, soziale Kanäle und interne Dokumentenspeicher. Wir möchten alle Inhalte und Metadaten in Apache Solr zur Kategorisierung, Volltextsuche, Optimierung und Kombination mit anderen Datenspeichern bereitstellen. Wir werden nicht nur Dokumente streamen, sondern auch alle REST-Feeds, Protokolle und IoT-Daten. Sobald die Daten in Pulsar Topics produziert wurden, können sie sofort über Pulsar Solr Sink in Solr aufgenommen werden.

Unter Verwendung einer Reihe von Open-Source-Tools haben wir einen skalierbaren Echtzeit-Datenfluss für die Analyse von Dokumenten entwickelt. Wir verwenden Apache Tika für die Dokumentenverarbeitung mit Spracherkennung in Echtzeit, natürliche Sprachverarbeitung mit Apache OpenNLP, Sentimentanalyse mit Stanford CoreNLP, Spacy und TextBlob. Wir werden Ihnen zeigen, wie Sie mit
einen Open-Source-Dokumentenfluss erstellen und dabei Apache NiFi als unsere Integrationsmaschine verwenden. Wir können PDF, Excel und Word in HTML und/oder Text umwandeln. Wir können den Text auch extrahieren, um mit Hilfe von Stimmungsanalysen und NLP-Kategorisierung zusätzliche Metadaten über unsere Dokumente zu erzeugen. Wir werden auch Bilder extrahieren und parsen, die wir, wenn sie Text enthalten, mit TensorFlow und Tesseract extrahieren können.

Zielpublikum

Dateningenieure, Suchingenieure, Programmierer, Analysten, Datenwissenschaftler, Bediener

Teilnehmer nehmen mit

Sie lernen, wie Sie Open Source Streaming nutzen können, um Daten in großem Umfang an Solr zu übergeben.

Sprecher

Timothy Spann, Berater für Entwickler, StreamNative


[Timothy Spann]

Hallo, ich bin Timothy Spann. Heute spreche ich mit Ihnen über Cloud Native Open Source Streaming in Echtzeit, beliebige Daten an Apache Solr.

Lassen Sie uns beginnen. Ich bin ein Entwickler, der sich für Open Source einsetzt, hauptsächlich für Apache-Projekte, vor allem Apache Pulsar, aber auch Apache Flink, Apache NiFi und einige andere dieser großartigen Open Source Projekte. Ich poste eine Menge Beispielcode, Anwendungen sowie Artikel und Videos unter dem angegebenen Link. Und wir werden dafür sorgen, dass Sie diese Folien nach der Konferenz erhalten.

Heute werde ich über zwei primäre Open-Source-Tools sprechen, die Ihnen helfen, Daten in Ihre Solr-Instanz einzuspeisen, egal ob diese in der Cloud oder in einem kleinen Cluster liegt. Ich verwende es heute in Docker. Das Schöne an Solr ist, dass Sie es überall dort einsetzen können, wo Sie es brauchen. Ich zeige Ihnen einige der anderen Tools, mit denen Sie Dinge wie Dokumente oder REST-Feeds, Protokolldaten und IoT-Daten ganz einfach verarbeiten können. Es ist gar nicht so komplex. Ich nenne die Tools, mit denen ich arbeite, den FLiP Stack. Das hört sich für mich einfach cool an und lässt die Leute wissen, welche Tools wir verwenden. Apache Flink und Pulsar arbeiten wirklich gut zusammen. Und es gibt eine Reihe anderer Apache-Projekte wie NiFi und Tika, die wirklich gut zusammenarbeiten. Und natürlich arbeiten sie auch gut mit Open Source-Datenquellen und Synchronisationen wie Solr zusammen.

Deshalb möchte ich Ihnen heute einen kleinen Einblick in diese Pipeline geben. Ich habe also einige verschiedene Datenquellen. Ich habe IoT-Daten. Ich habe einige Cloud-Statusdaten. Ein paar verschiedene Feeds, aber das Schöne ist, dass Sie mit den Tools, die wir verwenden, eine ganze Reihe verschiedener Quellen nutzen können. Ich zeige Ihnen einige, die über NiFi in Solr eingespeist werden. Einige davon werden nativ von Pulsar gelesen und Pulsar fungiert als Sync zu Solr und NiFi fungiert als Sync zu Solr.

Das Schöne daran ist, dass es verschiedene Möglichkeiten gibt, dies zu tun. Ein großartiges Merkmal von Open Source. Das macht es auch wirklich einfach. Ich möchte das noch einmal etwas näher erläutern. Heute sind die Datenquellen JSON und Text, aber auch PDFs, MongoDB, verschiedene Big-Data-Quellen und Cloud-Daten sind denkbar. Das Schöne daran ist, dass es mit den Open-Source-Tools, die wir hier haben, eigentlich keine Rolle mehr spielt. Ich verwende auch Apache OpenNLP, um einige dieser Daten zu analysieren. Eine meiner Datenquellen ist ein Verzeichnis mit einigen meiner Präsentationen. Ich schaue mir also PowerPoints und PDFs an, ziehe den Text mit Tika heraus und stelle ihn zur Verfügung, damit ich ihn in Solr einfügen kann, um ihn einfach zu suchen und für andere Anwendungen zu verwenden. Das ist eine großartige Funktion. Ich kann diese Daten auch in eine der verschiedenen Cloud-Synchronisationen übertragen. Sie können sie also für alle Arten von Analysen oder Anwendungen, die Sie benötigen, oder für mobile Anwendungen verwenden. Sie verstehen, was ich meine.

Um die Sache ein wenig zu vereinfachen, sind die Open-Source-Tools von Apache großartig, aber manchmal möchten Sie nicht all die verschiedenen Server, die verschiedenen Cluster, die Überwachung und die Verwaltung einrichten müssen. Zum Glück gibt es einige Cloud-Tools, die das einfacher machen. StreamNative Cloud macht es sehr viel einfacher. Es läuft nativ in der Cloud, hat Flink und Pulsar integriert und kann auf Kubernetes laufen, was die Skalierung nach oben und unten sehr einfach macht. Das ist wichtig, wenn Sie die Größe Ihrer Workloads nicht kennen oder wenn Sie manchmal wirklich leistungsstarke Aufträge haben, die zusätzliche Leistung benötigen, manchmal aber auch nicht.

Pulsar ist also ein sehr interessantes System für Messaging und Streaming, da es nur Berechnungen durchführt, was sehr schön ist, wenn man es als Cloud Native betrachtet. Die vom Speicher isolierte Rechenleistung, wie sie in Apache BookKeeper zum Einsatz kommt, ermöglicht Ihnen eine unabhängige Skalierung, was oft sehr sinnvoll ist, da Sie manchmal eine große Anzahl von Nachrichten erhalten. Einige davon könnten persistent sein. Einige vielleicht nicht. Für die Speicherung werden in der Regel nicht so viele Knoten benötigt wie für die Datenverarbeitung. Außerdem können wir Pulsar-Funktionen innerhalb von Pulsar ausführen, damit Sie einen Teil der Verarbeitung durchführen können, während Daten ein- und ausgehen. Sie können dort maschinelles Lernen oder andere Analysen durchführen. Das gibt Ihnen viele Möglichkeiten, vor allem, wenn Sie diese Last auch mit Flink und Flink SQL teilen können, um einige dieser Anwendungen für Sie zu erledigen.

Das Tolle an Pulsar ist, dass Sie eine große Menge an Daten haben können, die Sie vielleicht nicht in diesen einzelnen BookKeeper-Knoten aufbewahren möchten, oder die vielleicht in einem Bereich liegen, in dem der Speicher teuer oder klein ist. Sie können Pulsar ganz einfach so konfigurieren, dass der Speicherplatz gestaffelt ist. Wenn also ein bestimmtes Timing oder eine bestimmte Größe erreicht ist, werden die Daten direkt in S3 oder einem anderen skalierbaren und billigeren Speicher wie HDFS abgelegt. Das macht es sehr einfach, all dies für Sie auf eine saubere Art und Weise zu verwalten. Es ist also großartig, dass Sie diese Option für alle Ihre Pulsar-Cluster nutzen können. Und egal, ob Sie sie lokal oder bei Amazon, Google, Azure oder Alibaba einsetzen, alles wird für Sie erledigt, das macht es einfach.

Lassen Sie uns ein wenig über Pulsar sprechen. Ich habe Ihnen einen kleinen Überblick gegeben, aber es gibt ein paar wichtige Funktionen, die Sie vielleicht noch nicht kennen. Wenn Sie an ein anderes Messaging-Tool oder ein anderes Streaming-Tool denken, ist das hier etwas anders. Wie wir bereits erwähnt haben, ist die Trennung zwischen Datenverarbeitung und Speicherung ein großer Unterschied. Eine schöne integrierte Funktion ist die Georeplikation. Sie müssen sich nicht selbst etwas einfallen lassen oder ein spezielles Clustering oder Caching einrichten, um das zu erreichen, oder eine bestimmte Hardware verwenden. Die Georeplikation ist bereits eingebaut. Sie lässt sich sehr gut skalieren. Durch die Trennung von Rechenleistung und Speicherplatz ist dies ebenfalls sehr einfach möglich. Mehrmandantenfähigkeit ist integriert. Das bedeutet also, dass es sehr einfach ist. Ich habe vielleicht verschiedene Solr-Anwendungen, die eigentlich nicht zusammen sein sollten. Ich meine, es könnte sich um geschützte Daten handeln. Sie können also verschiedene Mandanten, verschiedene Namensräume einrichten, so dass niemand die Daten eines anderen sehen kann. So bleiben sie streng voneinander getrennt. So können Sie einen Cluster betreiben. Sie brauchen also keine zusätzlichen Cluster zu betreiben. Wir werden einen Pulsar-Connector verwenden, mit dem wir ganz einfach direkt in Solr streamen können. Es ist eine einfache Synchronisierung. Und ich gebe Ihnen den Quellcode dafür. Das Schöne daran ist, dass die Nachricht, sobald ich sie in ein Pulsar-Thema eingegeben habe, direkt in Solr landet. Einfacher geht es nicht. Sie müssen keinen speziellen Code schreiben. Wenn sie einmal drin ist, ist sie drin, das ist sehr schön.

Nun werden Sie mir vielleicht sagen, dass ich bereits andere Warteschlangen für Nachrichten habe. Ich möchte jetzt nicht alles neu schreiben oder auf ein neues Nachrichtensystem umstellen. Und das ist auch gut so. Eine weitere einzigartige Funktion von Pulsar ist, dass ich andere Nachrichtenprotokolle unterstützen kann. Das ist sehr praktisch, wenn Sie z.B. MQTT haben, das ich für IoT verwende. Pulsar Cluster kann diese Protokollaufrufe von Haus aus akzeptieren. Sie müssen Ihren Client nicht ändern. Verweisen Sie einfach auf einen anderen Broker. Das Gleiche gilt für AMQP, JMS, Kafka, das ist sehr praktisch. Ich könnte alle Anwendungen, die ich mit verschiedenen Messaging-Clustern habe, die möglicherweise nicht skalierbar sind, zu Pulsar leiten, das macht es sehr einfach. Ein Cluster skaliert, mehrstufiger Speicher, Georeplikation, verschiedene Arten von Abonnements, das macht es wirklich einfach. Das Schöne daran ist, dass diese beiden Seiten vereint sind.

Warteschlangen, die Sie normalerweise mit ActiveMQ oder Rabbit erstellen, werden von Pulsar unterstützt. Daten-Streaming, denken Sie an Kafka, Kinesis, auch das kann Pulsar. Die verschiedenen Abonnementtypen machen das Ganze sehr einfach. Und noch einmal: Wenn ich die Daten in Pulsar bekomme, reicht es vielleicht aus, sie mit Solr zu synchronisieren, vielleicht aber auch nicht. Vielleicht möchte ich sie zusätzlich mit Stream Computing bearbeiten. Die nette Verbindung mit Flink macht das trivial. Solr kennt hier offensichtlich jeder. Sie sind auf der Konferenz, aber ich wollte Ihnen nur Pulsar und Solr zeigen, die wirklich gute Freunde sind. Denn ich richte diese Synchronisierung einfach ein und beginne damit, Daten zu streamen. Sie müssen keine eigenen Anwendungen schreiben. Sie müssen nicht darüber nachdenken. Ich könnte also jedes Mal, wenn ich dort etwas hinzufüge, die Daten einfach dorthin übertragen lassen. Ich könnte sie immer noch an anderer Stelle für andere Verarbeitungen verwenden, aber es macht es wirklich einfach, Dinge für Ihre Suche verfügbar zu machen.

Auch hier habe ich ein wenig NiFi. Damit kann ich einige der Bereinigungen vornehmen und Daten ganz einfach einlesen und übersetzen. Dies ist ein weiterer guter Weg, um alle möglichen Arten von Daten in Solr zu bekommen. Wir werden diese schnell durchgehen, aber es hat native Konnektoren für Solr. Sie können auswählen, welche Felder Sie indizieren möchten. Sie brauchen nicht viel zu tun, um Ihre Daten schnell in Solr zu erhalten. Sie können sie auch abfragen. Wenn Sie also sehen möchten, was in Solr vor sich geht, oder es in einer Anwendung verwenden möchten, ist das sehr trivial. Ich arbeite auch ein wenig mit NLP. Sie können also ein wenig natürliche Sprachverarbeitung betreiben. Sehr einfach. Auch das werden wir Ihnen in den Demos zeigen. Mit Tika kann ich jede Art von Datei verarbeiten. Ich kann z.B. eine PDF-Datei in verwertbare Daten umwandeln, was wirklich leistungsstark ist.

Kommen wir nun zu der Demo. Ich denke, das ist wirklich wichtig. Jetzt habe ich einen Pulsar-Cluster laufen. Er hat bereits Schemata und einige Nachrichten und ich zeige Ihnen, wie ich die Daten dort bekommen habe. Für bestimmte Anwendungen mache ich das mit NiFi. Bei dieser Anwendung in NiFi liste ich alle PDFs auf, die ich habe. Und dann verarbeite ich sie, nehme die Daten auseinander, teile sie auf, lasse ein wenig NLP darauf laufen, um zu sehen, ob es reservierte Wörter oder Stellen gibt. Diese können hier sehr nützlich sein. Hier habe ich einen Namen und ein Datum gefunden. Und das kann ich dann verwenden. Ich führe eine Stimmungsanalyse durch. Bringen Sie all diese Daten in ein ansprechendes Format, und dann kann ich sie direkt an Solr weitergeben. Offensichtlich habe ich dort eine Menge an Daten. Ich könnte einen Blick darauf werfen und sehen, in welcher Sammlung sie sich befinden. Ich schiebe das in meine Dokumentensammlung. Wenn Sie sich hier umsehen, können Sie alle Daten sehen, die ich heraushole. Da ist die Stimmung. Da ist der Name der Datei. Da ist der einzelne Satz, den ich dort eingegeben habe. Also eine Menge verschiedener Dokumente. Ich hätte sie als ein einziges großes Dokument einfügen können, aber ich wollte sie wirklich auf Ereignisebene haben. So konnte ich wirklich in die Tiefe gehen. Auch hier kommt es darauf an, was Sie tun möchten. Das ist ziemlich einfach zu bewerkstelligen.

In diesem Fall konsumiere ich von einem Thema, das ich bereits ausgefüllt habe. Das macht es also ziemlich einfach. Die Verwendung von Pulsar ist wirklich einfach. Sie geben den Namen des Themas ein. Sie haben vielleicht ein Login. Sie geben einen Namen für ein Abonnement ein. Dank der Abonnements kann ich die Themen von verschiedenen Personen konsumieren lassen und festlegen, wie sie konsumiert werden sollen, was sehr wichtig ist. Und dann lege ich fest, wie viele Nachrichten auf einmal verschickt werden sollen und so weiter. Sehen Sie hier, ich habe 30 davon. NiFi wird hier eine Abfrage durchführen. Die Abfrage ist ziemlich simpel, aber sie wird nachsehen. Dies sind Energiedaten. Wenn die Spannung einen bestimmten Wert überschreitet, möchte ich eine Warnung senden. Andernfalls werde ich sie an Solr senden. Und das ist wieder NiFi, das an Solr sendet. Wenn wir uns die Energiedaten hier ansehen, sehen Sie, dass wir die aktuelle Spannung und Leistung erhalten, also alles, was Sie von Solr-Energiedaten erwarten würden. Ziemlich einfach. Ich habe hier einige Datenkollektoren auf einigen Geräten laufen. Einer von ihnen sammelt Energiedaten. Hier drüben habe ich eine Kamera auf einer Jetson-Box laufen. Sie macht Bilder und wirft einen Blick auf etwas in meinem Büro hier. Ich weiß nicht mehr, auf was ich die Kamera gerichtet habe. Zu viele Kameras hier drin. Das läuft also. Sie wird weitere Daten senden. Die Energie erhält weitere Daten.

Und hier drüben erhalte ich weitere Daten. In diesem Fall greife ich auf den Status verschiedener Cloud-Ressourcen zu und führe dies nur einmal aus. Sie werden nicht allzu oft aktualisiert. Die Daten werden hier von NiFi verarbeitet. Ich habe sie angehalten. Das Tolle an NiFi ist, dass die Daten beim Starten und Stoppen nicht verloren gehen. Zwischen den einzelnen Schritten als Verbindungspool. Hier sende ich spezielle Daten an Slack, wenn sie ein bestimmtes Kriterium erfüllen. Andernfalls baue ich einen benutzerdefinierten Datensatz auf, den ich an Solr weiterleiten möchte. Diese Daten enthalten verschiedene Vorfälle, die sich in verschiedenen Cloud-Ressourcen ereignen, für die ich bezahle. Und das sind alle meine Metadaten. Lassen Sie mich diese also an Solr senden. Dies sind die Vorfallsdaten, die wir suchen müssen. Das ist die Energie, die wir gerade erwähnt haben. Das sind die Jetson-Daten. Das sind weitere IoT-Daten. Hier sind unsere Vorfallsdaten. Und wie Sie hier sehen können, hatte AWS einige Probleme mit der Konnektivität. Sie können sehen, dass dieses Problem behoben werden konnte. Dies könnte also ein sehr nützlicher Datensatz sein, wenn Sie herausfinden wollen, wann etwas in Ihren Cloud-Ressourcen offline war.

Auch das ist mit NiFi ganz einfach. Und das ist nur der Anfang. Diese beiden Geräte verarbeiten die Daten ziemlich schnell. Und hier drüben habe ich eine Java-Beispielanwendung, die ich geschrieben habe, um Daten aus einer IoT-Datenquelle zu lesen und sie an Pulsar zu senden. Es ist ziemlich einfach, aber ich wollte, dass Sie diesen Java-Code haben, damit Sie es selbst tun können. Und mit der Pulsar-Synchronisierung werden die Daten dann automatisch in Solr übertragen. Sie mussten also nicht einmal über diesen Teil nachdenken. Schreiben Sie Ihre Daten, stellen Sie sie in eine Nachrichtenwarteschlange, die jedem, überall und jeder Art von Client zur Verfügung steht, und leiten Sie sie automatisch an Solr weiter, damit sie für die Suche zur Verfügung stehen – eine großartige Funktion. Hier haben Sie alle Ihre verschiedenen Logging-Zugangsdaten, falls Sie sie benötigen. Ich führe ein Beispiel lokal aus, weil ich meine IoT-Geräte in einem lokalen Netzwerk habe. Die Sicherheit bei IoT ist ziemlich gefährlich. Daher verwende ich gerne mein eigenes, nicht angeschlossenes Netzwerk. Ich lasse also nur Solr auf einem lokalen Server laufen. Und wie Sie hier sehen, ist das ganz einfach. Wählen Sie den Namen des Produzenten, wählen Sie ein Thema, nehmen Sie Ihre Nachricht, wählen Sie einen Schlüssel, geben Sie einen Wert ein und senden Sie sie. Wenn Sie mit Kafka gearbeitet haben, wird Ihnen das bekannt vorkommen. Wenn Sie mit JMS gearbeitet haben, kommt Ihnen das bekannt vor, denn es ist ziemlich einfach. Und hier kommt JSON rein, ich würde es automatisch in meine Nachricht mappen, und dann wird das gleiche Format an Solr gesendet.

Wenn wir also eine haben, die Jetson ist, könnten wir die richtige finden. Hier ist Jetson. Das sind all die Felder, die wir uns angesehen haben. Dies ist die IoT-Anwendung, die wir auf dem Jetson laufen sahen. Hier erhalten Sie ein Bild. Hier erhalten Sie einige Informationen über das Gerät. Sie wissen also, dass es sich um eine Mac-Adresse, eine IP-Adresse und all diese Dinge handelt, die für Sie wichtig sein könnten. Ich glaube, es hat ein Bild von meinem Monitor gemacht, was nicht gerade ein lustiges Bild ist, aber interessant. Wie Sie hier sehen, läuft es ständig, sammelt weitere Daten und gibt sie direkt an Solr weiter. Und jetzt habe ich all diese IoT- und Deep Learning-Daten zur Verfügung. Egal, welche Art von Anwendungen Sie auf Solr aufbauen, ob Dashboards, Berichte oder was auch immer, es gibt viele Möglichkeiten, die Sie nutzen können, und zwar sehr leistungsstark. Sie wissen schon, ziemlich einfach. Eine Sache, die ich Ihnen ganz schnell zeigen möchte, ist das erwähnte Schema. Es ist ziemlich einfach, diese Schemata zu erstellen. Pulsar unterstützt eine ganze Reihe davon. Es hat eine eingebaute Schemaregistrierung. Das hier ist nur ein JSON-Schema, aber es könnte auch ein Avro-Schema sein. Es gibt eine Menge verschiedener Optionen. Hier sehen Sie, dass ich Nullen unterstützen kann. Das kommt Ihnen sicher bekannt vor. Das sind dieselben Felder wie hier, einige sind doppelt, andere sind String, ziemlich einfach. Sonst gibt es nicht viel zu tun. Es ist ziemlich einfach, Daten in Pulsar einzugeben und sie automatisch mit Solr abzugleichen. Die Erstellung der Synchronisierung ist nur eine Zeile. Sie müssen den Connector herunterladen. Bei den meisten Distributionen ist er vorhanden, oder wenn Sie StreamNative verwenden, steht er Ihnen zur Verfügung. Geben Sie ein paar Informationen ein. Wenn Sie sichere Anmeldedaten haben, geben Sie diese dort ein. Und schon können Sie loslegen. Ich habe das alles auf GitHub dokumentiert. Ziemlich einfach.

Wenn Sie mehr erfahren möchten, habe ich hier eine Menge Links. Sie werden diese Folien erhalten. Damit sind Sie startklar. Vielen Dank, dass Sie zu meinem Vortrag gekommen sind, und viel Spaß auf der Konferenz.

Quick Links