Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
Inicie sessão no portal Azure.
No menu superior, selecione + Criar um recurso.
Selecione Analytics>Azure HDInsight para ir para a página Criar cluster HDInsight .
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, comoPass@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.
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.
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.
Selecione a guia Segurança + rede .
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.
Selecione a guia Configuração + preço .
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.
Selecione o separador Revisar + criar.
Revise a configuração do cluster. Altere todas as configurações incorretas. Por fim, selecione Criar para criar o cluster.
Pode levar até 20 minutos para criar o cluster.
Ligar ao cluster
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.netQuando 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.
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 jqDefinir a variável de password. Substitua
PASSWORDpela senha de login do cluster e digite o comando:export PASSWORD='PASSWORD'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>'.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.
Para verificar se a variável de ambiente está definida corretamente, use o seguinte comando:
echo $KAFKAZKHOSTSEste comando retorna informações semelhantes ao seguinte texto:
<zookeepername1>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181,<zookeepername2>.eahjefxxp1netdbyklgqj5y1ud.ex.internal.cloudapp.net:2181Para 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.
Para verificar se a variável de ambiente está definida corretamente, use o seguinte comando:
echo $KAFKABROKERSEste 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 $KAFKABROKERSEste 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 $KAFKABROKERSEste 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 $KAFKABROKERSEste comando exclui o tópico chamado
topicname.Warning
Se você excluir o
testtó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:
Para gravar registros no tópico, use o
kafka-console-producer.shutilitário da conexão SSH:/usr/hdp/current/kafka-broker/bin/kafka-console-producer.sh --broker-list $KAFKABROKERS --topic testApós esse comando, você chega a uma linha vazia.
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.
Para ler registos do tópico, use o utilitário
kafka-console-consumer.sha partir da ligação SSH./usr/hdp/current/kafka-broker/bin/kafka-console-consumer.sh --bootstrap-server $KAFKABROKERS --topic test --from-beginningEste comando recupera os registros do tópico e os exibe. O uso de
--from-beginningindica 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 $KAFKABROKERSpor--zookeeper $KAFKAZKHOSTS.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:
- 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.
- 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.
- 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.