Uso del registro de esquemas

Schema Registry proporciona un repositorio compartido de esquemas que permite que las aplicaciones interactúen de forma flexible entre sí.

Las aplicaciones creadas a menudo necesitan una forma de compartir metadatos en tres dimensiones:

  • Formato de Datos

  • Esquema

  • Semántica o significado de los datos

El valor que proporciona el registro de esquema y las aplicaciones que se integran con él son los siguientes:

  • Registro centralizado: proporcione un esquema reutilizable para evitar adjuntar el esquema a cada dato

  • Gestión de versiones: defina la relación entre las versiones de esquema para que los consumidores y los productores puedan evolucionar a distintas tarifas

  • Validación de esquema: active la conversión de formato genérico, el enrutamiento genérico y la calidad de los datos

¿Por qué utilizar el registro de esquemas?

Debido a la naturaleza disociada de Kafka, los productores y consumidores no se comunican directamente. En su lugar, la transferencia de información se realiza a través del tema de Kafka. Al mismo tiempo, el consumidor todavía necesita saber el tipo de datos que el productor está enviando para deserializarlo. Si el productor comienza a enviar datos incorrectos a Kafka o si el tipo de datos cambia, los consumidores descendentes comienzan a romperse. Debe haber una forma de tener un tipo de dato común que se haya acordado.

Ahí es donde entra en juego el registro de esquemas. El registro de esquemas es una aplicación que reside fuera del cluster de Kafka y gestiona la distribución de esquemas al productor y consumidor almacenando una copia del esquema en su caché local.

Casos de uso

Schema Registry proporciona un juego de API de Rest (con interfaces web) para que el esquema esté disponible de forma centralizada para las aplicaciones cliente. Los casos de uso comunes son:

  1. Registro y consulta de un esquema para un tema de Kafka

    Cuando Kafka está integrado en despliegues de organizaciones empresariales, normalmente tiene muchos temas de Kafka diferentes que utilizan diferentes aplicaciones y usuarios.

  2. Lectura/deserialización y escritura/serialización de datos desde y hacia un tema de Kafka

    Además de almacenar metadatos de esquema, otro caso de uso clave es almacenar metadatos para el formato de cómo se leen los datos y cómo se escriben. Schema Registry soporta este caso de uso proporcionando capacidades para almacenar archivos JAR para serializadores y deserializadores y, a continuación, asignando los serdares al esquema.

  3. Gestión de flujos de datos con enrutamiento basado en esquemas

    Si utiliza NiFi para mover diferentes tipos de eventos syslog a sistemas descendentes, hay requisitos de movimiento de datos en los que debe analizar el evento syslog para extraer el tipo de evento y enrutar el evento a un determinado sistema descendente (diferentes temas de Kafka, por ejemplo) en función del tipo de evento.

  4. La evolución dinámica del esquema permite que el esquema evolucione en un período de tiempo.

    Cualquier actualización del esquema crea una nueva revisión que se comunica a los consumidores.

  5. La aplicación/validación de esquemas desde el lado del consumidor se puede lograr sin problemas para la calidad de los datos.

Inicio del productor/consumidor de Kafka con el cliente Java

  1. En pom.xml, agregue lo siguiente a la configuración del productor de Kafka:
    import com.hortonworks.registries.schemaregistry.serdes.avro.kafka.KafkaAvroSerializer;
    ..
    config.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
    props.setProperty("schema.registry.url", "http://<host name>:9093/api/v1");
    config.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); 
    config.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class.getName());

    Las configuraciones en las que centrarse son:

    • schema.registry.url
    • key.serializer
    • value.serializer
  2. Agregue el siguiente texto a la configuración de consumidor de Kafka:
    import com.hortonworks.registries.schemaregistry.serdes.avro.kafka.KafkaAvroSerializer;
    ..
    config.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers);
    props.setProperty("schema.registry.url", "http://<host name>:9093/api/v1");
    config.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); 
    config.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, KafkaAvroDeserializer.class.getName());
  3. Después de iniciar el registro de esquema, acceda a la interfaz de usuario web: http://<FQDN>:9093

Adición de un registro de esquema Apache a clusters de ODH

Puede agregar el registro de esquema de Apache a los clusters de Big Data Service mediante Ambari

El registro de esquema no está instalado por defecto en un cluster de Big Data Service. El registro de esquemas soporta dos tipos de almacenamientos para almacenar metadatos de esquema.

  • Mysql: valor que se debe definir: mysql
  • En Memoria: Valor que se va a definir: inmemory

Para definir el tipo de almacenamiento adecuado, defina el parámetro Storage Type en la sección Schema-registry avanzada de la interfaz de usuario de Ambari.

Para definir Mysql como tipo de almacenamiento, se deben crear varias tablas antes de iniciar el servidor. Esto se realiza automáticamente cuando el parámetro Storage Type se define en mysql.

Nota

El parámetro MySql Passowrd es obligatorio al instalar el servicio de registro de esquema. Esta contraseña se utiliza para acceder a la información de esquema almacenada en las tablas de Mysql.

Para los clusters de Big Data Service 3.0.28 o anteriores, MySql Passowrd se debe restablecer manualmente desde el nodo un0 ejecutando el comando:

sudo update_mysql_password registry <password>

Proporcione esta contraseña durante la instalación del servicio Schema Registry.

  1. Acceda a Apache Ambari.
  2. Seleccione Agregar servicio en el menú Servicios.
  3. En el Asistente para agregar servicios, seleccione Registro de esquemas y, a continuación, seleccione Siguiente.
  4. Next (Siguiente).
  5. En la página Personalizar Servicios para el parámetro Advanced schema-registry, actualice Contraseña de Mysql al valor adecuado.

    Restablece la contraseña para la base de datos MySQL del registro.

  6. Seleccione Next (Siguiente).
  7. Revise la configuración y, a continuación, seleccione Desplegar.
  8. Espere a que se complete la instalación y, a continuación, seleccione Next (Siguiente).
  9. Seleccione Completar.
  10. Reinicie todos los servicios necesarios desde el menú Service (Servicio).
  11. Para verificar una instalación correcta, acceda al registro de esquema desde el panel de control de Apache Ambari y, a continuación, seleccione Acciones.
  12. Seleccione Ejecutar comprobación de servicio.