Usando o Schema Registry
O Schema Registry fornece um repositório compartilhado de esquemas que permite que os aplicativos interajam de forma flexível entre si.
Os aplicativos criados geralmente precisam de uma maneira de compartilhar metadados em três dimensões:
-
Formato dos dados
-
Esquema
-
Semântica ou significado dos dados
O valor que o Schema Registry fornece e os aplicativos que se integram a ele são os seguintes:
-
Registro centralizado: forneça esquema reutilizável para evitar anexar esquema a cada pedaço de dados
-
Gerenciamento de versões: Defina o relacionamento entre as versões do esquema para que os consumidores e produtores possam evoluir em taxas diferentes
-
Validação de esquema: Ativar conversão de formato genérico, roteamento genérico e qualidade de dados
Por que o Schema Registry?
Devido à natureza dissociada do Kafka, os produtores e consumidores não se comunicam diretamente. Em vez disso, a transferência de informações acontece por meio do tópico Kafka. Ao mesmo tempo, o consumidor ainda precisa saber o tipo de dados que o produtor está enviando para desserializá-lo. Se o produtor começar a enviar dados incorretos para o Kafka ou se o tipo de dados for alterado, os consumidores downstream começarão a quebrar. Deve haver uma maneira de ter um tipo de dados comum acordado.
É aí que entra o Schema Registry. O Schema Registry é um aplicativo que reside fora do cluster do Kafka e trata a distribuição de esquemas para o produtor e consumidor, armazenando uma cópia do esquema em seu cache local.
Casos de Uso
O Schema Registry fornece um conjunto de APIs Rest (com interfaces Web) para disponibilizar o Esquema centralmente para aplicativos clientes. Os casos de uso comuns são:
- Registrando e Consultando um Esquema para um Tópico do Kafka
Quando o Kafka é integrado a implantações de organização empresarial, você geralmente tem muitos tópicos do Kafka diferentes usados por diferentes aplicativos e usuários.
- Leitura/Deserialização e Escrita/Serialização de Dados de e para um Tópico do Kafka
Além de armazenar metadados de esquema, outro caso de uso importante é armazenar metadados para o formato de como os dados são lidos e como eles são gravados. O Schema Registry suporta esse caso de uso fornecendo recursos para armazenar arquivos JAR para serializadores e desserializadores e, em seguida, mapear os serdes para o esquema.
- Gerenciamento de Fluxo de Dados com Roteamento Baseado em Esquema
Se você estiver usando NiFi para mover diferentes tipos de eventos
syslog
para sistemas downstream, haverá requisitos de movimentação de dados em que você deverá fazer parsing do eventosyslog
para extrair o tipo de evento e rotear o evento para um determinado sistema downstream (diferentes tópicos do Kafka, por exemplo) com base no tipo de evento. -
A evolução dinâmica do esquema permite que o Esquema evolua ao longo de um período.
Qualquer atualização no esquema cria uma nova revisão que é comunicada aos consumidores.
- A aplicação/validação do esquema do lado do consumidor pode ser obtida perfeitamente para a qualidade dos dados.
Iniciando o Produtor/Consumidor do Kafka Usando o Cliente Java
Adicionando o Apache Schema Registry a Clusters ODH
Você pode adicionar o Registro de Esquema Apache aos clusters do Big Data Service usando o Ambari
O Registro de Esquema não é instalado por padrão em um cluster do Big Data Service. O registro de esquema suporta dois tipos de armazenamentos para armazenar metadados de esquema.
- Mysql: Valor a ser definido: mysql
- Na Memória: Valor a ser definido: inmemory
Para definir o tipo de armazenamento apropriado, defina o parâmetro Storage Type
na seção Registro de Esquema Avançado da IU do Ambari.
Para definir o Mysql como um tipo de armazenamento, várias tabelas devem ser criadas antes de iniciar o servidor. Isso é feito automaticamente quando o parâmetro Storage Type
é definido como mysql.
O parâmetro
MySql Passowrd
é obrigatório ao instalar o serviço Schema Registry. Essa senha é usada para acessar as informações de esquema armazenadas nas tabelas Mysql.Para clusters do Big Data Service 3.0.28 ou anteriores, MySql Passowrd
deve ser redefinido manualmente do nó un0 executando o comando:
sudo update_mysql_password registry <password>
Forneça essa senha durante a instalação do serviço Schema Registry.