Schema Registry verwenden
Schema Registry stellt ein gemeinsames Repository von Schemas bereit, mit dem Anwendungen flexibel miteinander interagieren können.
Anwendungen, die erstellt wurden, benötigen häufig eine Möglichkeit, Metadaten über drei Dimensionen hinweg gemeinsam zu nutzen:
-
Datenformat
-
Schema
-
Semantik oder Bedeutung der Daten
Der von der Schema-Registry bereitgestellte Wert und die darin integrierten Anwendungen lauten wie folgt:
-
Zentralisierte Registry: Geben Sie ein wiederverwendbares Schema an, um zu vermeiden, dass jedem Datenelement ein Schema zugeordnet wird
-
Versionsverwaltung: Definieren Sie die Beziehung zwischen Schemaversionen, sodass sich Verbraucher und Producer zu unterschiedlichen Raten entwickeln können
-
Schemavalidierung: Allgemeine Formatkonvertierung, generisches Routing und Datenqualität aktivieren
Warum Schema Registry?
Aufgrund der entkoppelten Natur von Kafka kommunizieren Produzenten und Verbraucher nicht direkt. Stattdessen erfolgt der Informationsaustausch über das Kafka-Thema. Gleichzeitig muss der Verbraucher immer noch wissen, welche Art von Daten der Produzent sendet, um sie zu deserialisieren. Wenn der Producer beginnt, fehlerhafte Daten an Kafka zu senden, oder wenn der Datentyp geändert wird, brechen die Downstream-Consumer ab. Es muss eine Möglichkeit geben, einen gemeinsamen Datentyp zu haben, der vereinbart ist.
Hier kommt Schema Registry ins Spiel. Schema Registry ist eine Anwendung, die sich außerhalb des Kafka-Clusters befindet und die Verteilung von Schemas an den Producer und Consumer verwaltet, indem eine Kopie des Schemas im lokalen Cache gespeichert wird.
Anwendungsfälle
Schema Registry stellt eine Gruppe von Rest-APIs (mit Webschnittstellen) bereit, um das Schema zentral für Clientanwendungen verfügbar zu machen. Gängige Anwendungsfälle:
- Schema für ein Kafka-Topic registrieren und abfragen
Wenn Kafka in Unternehmensorganisations-Deployments integriert ist, werden in der Regel viele verschiedene Kafka-Themen von verschiedenen Apps und Benutzern verwendet.
- Lesen/Deserialisieren und Schreiben/Serialisieren von Daten aus und zu einem Kafka-Thema
Zusätzlich zum Speichern von Schemametadaten besteht ein weiterer wichtiger Anwendungsfall darin, Metadaten für das Format des Lesevorgangs und der Schreibweise von Daten zu speichern. Schema Registry unterstützt diesen Anwendungsfall, indem sie Funktionen zum Speichern von JAR-Dateien für Serializer und Deserializer bereitstellt und dann die Serdes dem Schema zuordnet.
- Datenflussverwaltung mit schemabasiertem Routing
Wenn Sie NiFi verwenden, um verschiedene Typen von
syslog
-Ereignissen in nachgelagerte Systeme zu verschieben, müssen Sie das Ereignissyslog
parsen, um den Ereignistyp zu extrahieren, und das Ereignis basierend auf dem Ereignistyp an ein bestimmtes nachgelagertes System (z.B. andere Kafka-Themen) weiterleiten. -
Die dynamische Schemaentwicklung ermöglicht die Entwicklung des Schemas über einen bestimmten Zeitraum.
Alle Aktualisierungen im Schema erstellen eine neue Revision, die an Consumer kommuniziert wird.
- Die Durchsetzung/Validierung des Schemas von der Consumer-Seite kann für die Datenqualität nahtlos erreicht werden.
Kafka-Producer/Consumer mit Java-Client starten
Apache Schema Registry zu ODH-Clustern hinzufügen
Sie können Apache Schema Registry mit Ambari zu Big Data Service-Clustern hinzufügen
Schema-Registry ist nicht standardmäßig in einem Big Data Service-Cluster installiert. Die Schema-Registry unterstützt zwei Arten von Speichern zum Speichern von Schemadaten.
- Mysql: Einzustellender Wert: mysql
- In-Memory: Einzustellender Wert: inmemory
Um den entsprechenden Speichertyp festzulegen, legen Sie den Parameter Storage Type
in der Ambari-UI im Abschnitt "Schema-Registry erweitern" fest.
Um Mysql als Speichertyp festzulegen, müssen vor dem Hochfahren des Servers mehrere Tabellen erstellt werden. Dies geschieht automatisch, wenn der Parameter Storage Type
auf mysql gesetzt ist.
Der Parameter
MySql Passowrd
ist obligatorisch, wenn Sie den Schema-Registry-Service installieren. Dieses Kennwort wird für den Zugriff auf die Schemainformationen verwendet, die in den Mysql-Tabellen gespeichert sind.Bei Big Data Service 3.0.28-Clustern oder früheren Clustern muss MySql Passowrd
manuell vom Knoten un0 zurückgesetzt werden, indem Sie den folgenden Befehl ausführen:
sudo update_mysql_password registry <password>
Geben Sie dieses Kennwort bei der Installation des Schemaregistrierungsservice an.