Wann – und wann nicht – Open Source Apache Cassandra, Kafka, Spark und Elasticsearch verwenden

Fast alle Technologieentscheidungen müssen zwei wesentliche Kriterien erfüllen: Sie müssen es Ihnen ermöglichen, Ihre Geschäftsziele zu erreichen, und sie müssen gut mit dem Rest Ihres Technologie-Stacks zusammenarbeiten. Wenn es um die Auswahl von Data-Layer-Technologien zum Aufbau Ihrer Anwendungsarchitektur geht, werden Open Source Apache Cassandra, Apache Kafka, Apache Spark und Elasticsearch immer beliebter.

Sie sind jedoch nicht für jeden Anwendungsfall die richtige Wahl.

Werfen wir einen genaueren Blick auf jede dieser Technologien und einige der Anwendungsfälle, die vorteilhafte Anwendungen dieser Open–Source–Lösungen sind und nicht.

Apache Cassandra

Cassandra wurde ursprünglich 2007 von Facebook erstellt und verwendet eine Dynamo-Architektur und ein Datenmodell im Bigtable-Stil, um einen NoSQL-Datenspeicher bereitzustellen, der eine hohe Verfügbarkeit und Skalierbarkeit bietet.

Wann Sie Apache Cassandra verwenden sollten

Cassandra ist die ideale Wahl für Anwendungsfälle, die ein Höchstmaß an ständiger Verfügbarkeit erfordern. Die Datenbank eignet sich auch besonders gut für Organisationen, die mit massiven Workloads rechnen oder sicherstellen möchten, dass ihre Services flexibel wachsen können, wenn die Workloads zunehmen (und daher die einfache Skalierbarkeit benötigen, die Cassandra bietet). Cassandra bietet zuverlässige Datenredundanz und aktiven Betrieb über mehrere Rechenzentren hinweg.

Wenn Sie nicht sollten

Cassandra ist ressourcenintensiver als Alternativen, wenn es um Data Warehousing oder reinen Analysespeicher geht (sogar unter Berücksichtigung der Verwendung verfügbarer Spark-Konnektoren und Tableau- und Hadoop-Plugins). Cassandra eignet sich auch schlecht für Echtzeitanalysen, insbesondere in Form von Ad-hoc- oder benutzerdefinierten Endbenutzerabfragen, da die Notwendigkeit, Code auf der Anwendungsseite zu implementieren, kompliziert werden kann. Darüber hinaus erfüllt Cassandra die meisten ACID-Anforderungen nicht.

Apache Kafka

Apache Kafka wurde erstmals vom technischen Team von LinkedIn entwickelt und bietet eine hoch skalierbare und hochverfügbare Streaming-Plattform und einen Nachrichtenbus. Kafka fungiert als verteiltes Protokoll, in dem neu ankommende Nachrichten zum Kopf einer Warteschlange hinzugefügt werden und Leser (Verbraucher) sie basierend auf einem Offset verbrauchen.

Wann Sie Apache Kafka verwenden sollten

Apache Kafka ist im Allgemeinen eine kluge Wahl für Anwendungsfälle, die Microservices und serviceorientierte Architektur umfassen. Kafka kann auch als hocheffektive Arbeitswarteschlange dienen, die separate Arbeitspfade koordinieren und Rechenleistung reservieren kann, indem sie zuhört und wartet, bis die Arbeit eintrifft. Die Stream-Verarbeitungsfunktionen der Plattform sind nützlich für die Erkennung von Anomalien, Roll-ups und Aggregationen sowie für die Weitergabe von Metriken. Kafka ist auch eine leistungsstarke Option für Event Sourcing, Datenabgleich über verschiedene Microservices hinweg und die Bereitstellung eines externen Commit-Protokolls für verteilte Systeme. Weitere geeignete Anwendungsfälle sind Protokollaggregation, Datenmaskierung und -filterung, Datenanreicherung und Betrugserkennung.

Wenn Sie nicht sollten

Obwohl es in einigen Fällen verlockend sein mag, kann es schlecht beraten sein, Kafka als Datenbank oder Datensatzquelle zu verwenden, zumindest ohne ein sehr solides Verständnis von Kafka Einschränkungen und Eigenschaften für diesen Anwendungsfall. Eine echte Datenbank ist fast immer einfacher zu bedienen und flexibler. Kafka ist eine ähnlich unangemessene Wahl für die Auftragsverarbeitung über ein ganzes Thema hinweg. In jedem Anwendungsfall, in dem das Ziel darin besteht, Datenpakete schnell zur Endquelle weiterzuleiten, z. B. Audio und Video in Echtzeit oder andere verlustbehaftete Datenströme, sollten Unternehmen anstelle von Kafka speziell entwickelte Lösungen verwenden.

Apache Spark

Apache Spark ist ein universelles Cluster-Computing-Framework, das für Anwendungsfälle mit großen Datenmengen geeignet ist. Apache Spark teilt Daten auf und führt Berechnungen für diese Segmente durch, sodass Worker alle möglichen Arbeiten ausführen, bis sie Daten von anderen Workern benötigen. Dieses Design bietet Spark eine enorme Skalierbarkeit und Verfügbarkeit und ist gleichzeitig sehr widerstandsfähig gegen Datenverlust.

Wann Sie Apache Spark verwenden sollten

Spark eignet sich für Anwendungsfälle mit umfangreichen Analysen, insbesondere für Fälle, in denen Daten über mehrere Quellen eingehen. Spark ist eine leistungsstarke Lösung für ETL oder jeden Anwendungsfall, der das Verschieben von Daten zwischen Systemen umfasst, entweder wenn ein Data Warehouse oder ein Data Lake kontinuierlich aus Transaktionsdatenspeichern gefüllt wird, oder in einmaligen Szenarien wie Datenbank- oder Systemmigrationen. Unternehmen, die Pipelines für maschinelles Lernen auf vorhandenen Daten aufbauen, mit Streaming mit hoher Latenz arbeiten oder interaktive, Ad-hoc- oder explorative Analysen durchführen, werden feststellen, dass Spark gut zu ihnen passt. Spark bietet sich auch an, um Unternehmen bei der Erfüllung ihrer Compliance-Anforderungen zu unterstützen, indem Datenmaskierung, Datenfilterung und Prüfung großer Datensätze aus Compliance-Sicht angeboten werden.

Wenn nicht

Im Allgemeinen ist Spark nicht die beste Wahl für Anwendungsfälle mit Echtzeit- oder Latenzverarbeitung. (Apache Kafka oder andere Technologien bieten eine überlegene End-to-End-Latenz für diese Anforderungen, einschließlich Echtzeit-Stream-Verarbeitung.) Wenn Sie mit kleinen oder einzelnen Datensätzen arbeiten, ist Spark meistens eine zu übermäßige Option. Wenn es um Data Warehousing und Data Lakes geht, ist es besser, anstelle von Apache Spark eine übergeordnete Technologie zu verwenden, obwohl es solche Produkte für Spark gibt.

Elasticsearch

Elasticsearch bietet eine Volltextsuchmaschine, die eine Vielzahl von Funktionen zur Suche und Analyse unstrukturierter Daten bietet. Die Technologie bietet eine skalierbare lineare Suche nahezu in Echtzeit, robuste Drop-In-Suchfunktionen und umfangreiche Analysefunktionen.

Wann Sie Elasticsearch verwenden sollten

Elasticsearch eignet sich hervorragend für Anwendungsfälle, die Volltextsuche, geografische Suche, Scraping und Kombination öffentlicher Daten, Protokollierung und Protokollanalyse, Visualisierungen sowie Ereignisdaten und -metriken mit geringem Volumen erfordern.

Wenn nicht

Elasticsearch sollte nicht als Datenbank oder Datensatzquelle, mit relationalen Daten oder zur Erfüllung von ACID-Anforderungen verwendet werden.

Auswahl komplementärer Technologien

Die Auswahl des besten Technologiemix für Ihre Organisation (ob Open Source oder anderweitig) beinhaltet offensichtlich mehr als nur die Bewertung der Lösungen selbst – Entscheidungsträger müssen sich auch vorstellen, wie die Organisation jede Lösung als Teil ihres Technologie-Stacks übernehmen und nutzen wird. Apache Cassandra, Apache Kafka, Apache Spark und Elasticsearch bieten eine besonders komplementäre Reihe von Technologien, die für Organisationen sinnvoll sind und die dank ihrer Open-Source-Natur frei von Lizenzgebühren oder Herstellerbindung sind. Durch die Kombination dieser Technologien und die Realisierung ihrer gesammelten Vorteile können Unternehmen ihre Ziele erreichen und die Entwicklung von Anwendungen ermöglichen, die hochgradig skalierbar, verfügbar, portabel und belastbar sind.

Ben Slater ist Chief Product Officer bei Instaclustr, das eine Managed-Service-Plattform mit Open-Source-Technologien wie Apache Cassandra, Apache Spark, Elasticsearch und Apache Kafka bereitstellt.

Verwandte Artikel:

Hier ist, was Doug Cutting sagt, ist Hadoops größter Beitrag

Ein Jahrzehnt später ist Apache Spark immer noch stark

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.