Partilhar via


Guia de início rápido: criar cluster Apache Kafka no Azure HDInsight usando o portal do Azure

Apache Kafka é uma plataforma de streaming distribuída de código aberto. É frequentemente utilizado como mediador de mensagens, uma vez que fornece funcionalidades semelhantes a uma fila de mensagens de publicação-subscrição.

Neste Guia de início rápido, você aprenderá a criar um cluster Apache Kafka usando o portal do Azure. Você também aprende a usar utilitários incluídos para enviar e receber mensagens usando o Apache Kafka. Para obter explicações detalhadas sobre as configurações disponíveis, consulte Configurar clusters no HDInsight. Para obter informações adicionais sobre o uso do portal para criar clusters, consulte Criar clusters no portal.

Warning

A cobrança dos clusters HDInsight é rateada por minuto, quer sejam utilizados ou não. Certifique-se de excluir o cluster depois de terminar de usá-lo. Veja como excluir um cluster HDInsight.

Só os recursos dentro da mesma rede virtual podem aceder à API do Apache Kafka. Neste Guia de início rápido, você acessa o cluster diretamente usando SSH. Para ligar outros serviços, redes ou máquinas virtuais ao Apache Kafka, tem primeiro de criar uma rede virtual e, em seguida, criar os recursos dentro da rede. Para obter mais informações, consulte Conectar ao Apache Kafka usando um documento de rede virtual . Para obter mais informações gerais sobre como planejar redes virtuais para o HDInsight, consulte Planejar uma rede virtual para o Azure HDInsight.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Prerequisites

Um cliente SSH. Para obter mais informações, consulte Conectar-se ao HDInsight (Apache Hadoop) usando SSH.

Criar um cluster do Apache Kafka

Para criar um cluster Apache Kafka no HDInsight, use as seguintes etapas:

  1. Inicie sessão no portal Azure.

  2. No menu superior, selecione + Criar um recurso.

    O portal do Azure cria o recurso HDInsight.

  3. Selecione Analytics>Azure HDInsight para ir para a página Criar cluster HDInsight .

  4. Na guia Noções básicas , forneça as seguintes informações:

    Property Description
    Subscription Na lista suspensa, selecione a assinatura do Azure usada para o cluster.
    Grupo de recursos Crie um grupo de recursos ou selecione um grupo de recursos existente. Um grupo de recursos é um contêiner de componentes do Azure. Nesse caso, o grupo de recursos contém o cluster HDInsight e a conta de Armazenamento do Azure dependente.
    Nome do cluster Introduza um nome globalmente exclusivo. O nome pode ter até 59 caracteres, incluindo letras, números e hífenes. O primeiro e o último caracteres do nome não podem ser hífenes.
    Region Na lista suspensa, selecione uma região onde o cluster será criado. Escolha uma região mais próxima de si para um melhor desempenho.
    Tipo de cluster Selecione Selecionar tipo de cluster para abrir uma lista. Na lista, selecione Kafka como o tipo de cluster.
    Version A versão padrão para o tipo de cluster será especificada. Selecione na lista suspensa se desejar especificar uma versão diferente.
    Nome de utilizador e palavra-passe de início de sessão no cluster O nome de login padrão é admin. A senha deve ter pelo menos 10 caracteres e deve conter pelo menos um dígito, uma letra maiúscula e uma letra minúscula, um caractere não alfanumérico (exceto caracteres ' ` "). Certifique-se de que não fornece palavras-passe comuns, como Pass@word1.
    Nome de utilizador de Secure Shell (SSH) O nome de usuário padrão é sshuser. Você pode fornecer outro nome para o nome de usuário SSH.
    Utilizar a password de login do cluster para SSH Marque essa caixa de seleção para usar a mesma senha para o usuário SSH que você forneceu para o usuário de logon do cluster.

    O portal do Azure cria noções básicas de cluster.

    Cada região (local) do Azure oferece domínios de falha. Um domínio de falha é um agrupamento lógico de hardware subjacente num centro de dados do Azure. Cada domínio de falha partilha um comutador de rede e uma fonte de alimentação. As máquinas virtuais e os discos gerenciados que implementam os nós em um cluster HDInsight são distribuídos entre esses domínios de falha. Essa arquitetura limita o impacto potencial de falhas de hardware físico.

    Para alta disponibilidade de dados, selecione uma região (local) que contenha três domínios de falha. Para obter informações sobre o número de domínios de falha em uma região, consulte o documento Disponibilidade de máquinas virtuais Linux .

    Selecione a guia Avançar: Armazenamento >> para avançar para as configurações de armazenamento.

  5. Na guia Armazenamento , forneça os seguintes valores:

    Property Description
    Tipo de armazenamento primário Use o valor padrão Armazenamento do Azure.
    Método de seleção Use o valor padrão Selecionar da lista.
    Conta de armazenamento primária Use a lista suspensa para selecionar uma conta de armazenamento existente ou selecione Criar novo. Se criar uma nova conta, o nome tem de ter entre 3 e 24 carateres e pode incluir apenas números e letras minúsculas
    Container Use o valor preenchido automaticamente.

    O guia de introdução ao HDInsight Linux define valores de armazenamento para clusters.

    Selecione a guia Segurança + rede .

  6. Para este início rápido, mantenha as configurações de segurança padrão. Para saber mais sobre o pacote de Segurança Empresarial, visite Configurar um cluster HDInsight com o Pacote de Segurança Empresarial usando os Serviços de Domínio Microsoft Entra. Para saber como usar sua própria chave para o Apache Kafka Disk Encryption, visite Criptografia de disco de chave gerenciada pelo cliente

    Se você quiser conectar seu cluster a uma rede virtual, selecione uma rede virtual na lista suspensa Rede virtual.

    Adicione cluster a uma rede virtual.

    Selecione a guia Configuração + preço .

  7. Para garantir a disponibilidade do Apache Kafka no HDInsight, o número de nós de entrada para o nó Worker deve ser definido como 3 ou superior. O valor padrão é 4.

    Os discos padrão por entrada de nó de trabalho configuram a escalabilidade do Apache Kafka no HDInsight. O Apache Kafka no HDInsight usa o disco local das máquinas virtuais no cluster para armazenar dados. O Apache Kafka é pesado em E/S, portanto, os Discos Geridos do Azure são usados para fornecer elevada capacidade de transferência e mais armazenamento por nó. O tipo de disco gerenciado pode ser Standard (HDD) ou Premium (SSD). O tipo de disco depende do tamanho da VM usado pelos nós de trabalho (agentes Apache Kafka). Os discos Premium são usados automaticamente com VMs das séries DS e GS. Todos os outros tipos de VM usam padrão.

    Defina o tamanho do cluster Apache Kafka.

    Selecione o separador Revisar + criar.

  8. Revise a configuração do cluster. Altere todas as configurações incorretas. Por fim, selecione Criar para criar o cluster.

    Captura de tela mostrando o resumo da configuração do cluster kafka para HDI versão 5.0.

    Pode levar até 20 minutos para criar o cluster.

Ligar ao cluster

  1. Use o comando ssh para se conectar ao cluster. Edite o comando abaixo substituindo CLUSTERNAME pelo nome do cluster e digite o comando:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Quando solicitado, digite a senha do usuário SSH.

    Uma vez conectado, você verá informações semelhantes ao seguinte texto:

    Authorized uses only. All activity may be monitored and reported.
    Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-1011-azure x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
      Get cloud support with Ubuntu Advantage Cloud Guest:
        https://www.ubuntu.com/business/services/cloud
    
    83 packages can be updated.
    37 updates are security updates.
    
    
    Welcome to Apache Kafka on HDInsight.
    
    Last login: Thu Mar 29 13:25:27 2018 from 108.252.109.241
    

Obtenha as informações do host Apache Zookeeper e Broker

Ao trabalhar com Kafka, você deve conhecer os hosts Apache Zookeeper e Broker . Esses hosts são usados com a API Apache Kafka e muitos dos utilitários que acompanham o Kafka.

Nesta seção, você obtém as informações do host da API REST do Apache Ambari no cluster.

  1. Instale jq, um processador JSON de linha de comando. Este utilitário é usado para analisar documentos JSON e é útil na análise das informações do host. A partir da conexão SSH aberta, digite o seguinte comando para instalar jq:

    sudo apt -y install jq
    
  2. Definir a variável de password. Substitua PASSWORD pela senha de login do cluster e digite o comando:

    export PASSWORD='PASSWORD'
    
  3. Extraia o nome do cluster com a capitalização correta. O invólucro real do nome do cluster pode ser diferente do esperado, dependendo de como o cluster foi criado. Este comando obterá o invólucro real e, em seguida, armazená-lo-á em uma variável. Digite o seguinte comando:

    export CLUSTER_NAME=$(curl -u admin:$PASSWORD -sS -G "http://headnodehost:8080/api/v1/clusters" | jq -r '.items[].Clusters.cluster_name')
    

    Note

    Se você estiver fazendo esse processo de fora do cluster, há um procedimento diferente para armazenar o nome do cluster. Obtenha o nome do cluster em minúsculas no portal do Azure. Em seguida, substitua o nome do cluster por <clustername> no comando a seguir e execute-o: export clusterName='<clustername>'.

  4. Para definir uma variável de ambiente com as informações do host do Zookeeper, use o comando abaixo. O comando recupera todos os hosts do Zookeeper e, em seguida, retorna apenas as duas primeiras entradas. Isso ocorre porque você quer alguma redundância no caso de um host estar inacessível.

    export KAFKAZKHOSTS=$(curl -sS -u admin:$PASSWORD -G https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/services/ZOOKEEPER/components/ZOOKEEPER_SERVER | jq -r '["\(.host_components[].HostRoles.host_name):2181"] | join(",")' | cut -d',' -f1,2);
    

    Note

    Este comando requer acesso Ambari. Se o cluster estiver atrás de um NSG, execute este comando a partir de uma máquina que possa acessar o Ambari.

  5. Para verificar se a variável de ambiente está definida corretamente, use o seguinte comando:

    echo $KAFKAZKHOSTS
    

    Este comando retorna informações semelhantes ao seguinte texto:

    <zookeepername1>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181,<zookeepername2>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181

  6. Para definir uma variável de ambiente com informações de host do broker Apache Kafka, use o seguinte comando:

    export KAFKABROKERS=$(curl -sS -u admin:$PASSWORD -G https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/services/KAFKA/components/KAFKA_BROKER | jq -r '["\(.host_components[].HostRoles.host_name):9092"] | join(",")' | cut -d',' -f1,2);
    

    Note

    Este comando requer acesso Ambari. Se o cluster estiver atrás de um NSG, execute este comando a partir de uma máquina que possa acessar o Ambari.

  7. Para verificar se a variável de ambiente está definida corretamente, use o seguinte comando:

    echo $KAFKABROKERS
    

    Este comando retorna informações semelhantes ao seguinte texto:

    <brokername1>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092,<brokername2>.eahjefxxp1netdbyklgqj5y1ud.cx.internal.cloudapp.net:9092

Gerenciar tópicos do Apache Kafka

Kafka armazena fluxos de dados em tópicos. Você pode usar o kafka-topics.sh utilitário para gerenciar tópicos.

  • Para criar um tópico, use o seguinte comando na conexão SSH:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --create --replication-factor 3 --partitions 8 --topic test --bootstrap-server $KAFKABROKERS
    

    Este comando se conecta ao Broker usando as informações do host armazenadas no $KAFKABROKERS. Em seguida, ele cria um tópico Apache Kafka chamado test.

    • Os dados armazenados neste tópico são particionados em oito partições.

    • Cada partição é replicada em três nodos de trabalho no cluster.

      • Se você criou o cluster em uma região do Azure que fornece três domínios de falha, use um fator de replicação de 3. Caso contrário, use um fator de replicação de 4.

      • Em regiões com três domínios de falha, um fator de replicação de 3 permite que as réplicas sejam espalhadas pelos domínios de falha. Em regiões com dois domínios de falha, um fator de replicação de quatro distribui as réplicas uniformemente pelos domínios.

      • Para obter informações sobre o número de domínios de falha em uma região, consulte o documento Disponibilidade de máquinas virtuais Linux .

      • O Apache Kafka não está ciente dos domínios de falha do Azure. Ao criar réplicas de partição para tópicos, a distribuição das réplicas pode não ser adequada para garantir alta disponibilidade.

      • Para garantir alta disponibilidade, use a ferramenta de reequilíbrio de partições Apache Kafka. Esta ferramenta deve ser executada via uma conexão SSH para o nó principal do seu cluster do Apache Kafka.

      • Para obter a máxima disponibilidade dos seus dados em Apache Kafka, deverá reequilibrar as réplicas de partição para o seu tópico quando:

        • Você cria um novo tópico ou partição

        • Aumentar a escala de um cluster

  • Para listar tópicos, use o seguinte comando:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --bootstrap-server $KAFKABROKERS
    

    Este comando lista os tópicos disponíveis no cluster Apache Kafka.

  • Para excluir um tópico, use o seguinte comando:

    /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --delete --topic topicname --bootstrap-server $KAFKABROKERS
    

    Este comando exclui o tópico chamado topicname.

    Warning

    Se você excluir o test tópico criado anteriormente, deverá recriá-lo. Isto é utilizado nas etapas seguintes deste documento.

Para obter mais informações sobre os comandos disponíveis com o kafka-topics.sh utilitário, use o seguinte comando:

/usr/hdp/current/kafka-broker/bin/kafka-topics.sh

Produzir e consumir registros

Kafka armazena registros em tópicos. Os discos são produzidos pelos produtores e consumidos pelos consumidores. Produtores e consumidores comunicam-se com o serviço Kafka broker. Cada nó de trabalho no seu cluster HDInsight é um host de corretor do Apache Kafka.

Para armazenar registos no tópico de teste criado anteriormente e, em seguida, lê-los usando um cliente consumidor, siga os seguintes passos:

  1. Para gravar registros no tópico, use o kafka-console-producer.sh utilitário da conexão SSH:

    /usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $KAFKABROKERS --topic test
    

    Após esse comando, você chega a uma linha vazia.

  2. Digite uma mensagem de texto na linha vazia e pressione enter. Insira algumas mensagens dessa maneira e use Ctrl + C para retornar ao prompt normal. Cada linha é enviada como um registro separado para o tópico Apache Kafka.

  3. Para ler registos do tópico, use o utilitário kafka-console-consumer.sh a partir da ligação SSH.

    /usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server $KAFKABROKERS --topic test --from-beginning
    

    Este comando recupera os registros do tópico e os exibe. O uso de --from-beginning indica ao consumidor que deve começar desde o início do stream, garantindo que todos os registos sejam recuperados.

    Se estiver a utilizar uma versão mais antiga do Kafka, substitua --bootstrap-server $KAFKABROKERS por --zookeeper $KAFKAZKHOSTS.

  4. Use Ctrl + C para parar o consumidor.

Você também pode criar produtores e consumidores de forma programática. Para obter um exemplo de uso dessa API, consulte o documento Apache Kafka Producer and Consumer API with HDInsight .

Limpeza de recursos

Para limpar os recursos criados por este início rápido, você pode excluir o grupo de recursos. A exclusão do grupo de recursos também exclui o cluster HDInsight associado e quaisquer outros recursos associados ao grupo de recursos.

Para remover o grupo de recursos usando o portal do Azure:

  1. No portal do Azure, expanda o menu no lado esquerdo para abrir o menu de serviços e escolha Grupos de Recursos para exibir a lista de seus grupos de recursos.
  2. Localize o grupo de recursos a eliminar e, em seguida, clique com o botão direito do rato no botão Mais (...) no lado direito da listagem.
  3. Selecione Excluir grupo de recursos e confirme.

Warning

A exclusão de um cluster Apache Kafka no HDInsight exclui todos os dados armazenados no Kafka.

Próximos passos