Apache Kafka - Operações Básicas

Primeiro, vamos começar a implementar a configuração de broker de nó único e, em seguida, migraremos nossa configuração para a configuração de brokers de nó único e vários.

Com sorte, você já deve ter instalado o Java, o ZooKeeper e o Kafka em sua máquina. Antes de passar para a configuração do cluster Kafka, primeiro você precisa iniciar o ZooKeeper porque o cluster Kafka usa o ZooKeeper.

Inicie o ZooKeeper

Abra um novo terminal e digite o seguinte comando -

bin/zookeeper-server-start.sh config/zookeeper.properties

Para iniciar o Kafka Broker, digite o seguinte comando -

bin/kafka-server-start.sh config/server.properties

Depois de iniciar o Kafka Broker, digite o comando jps no terminal ZooKeeper e você verá a seguinte resposta -

821 QuorumPeerMain
928 Kafka
931 Jps

Agora você pode ver dois daemons em execução no terminal onde QuorumPeerMain é o daemon ZooKeeper e outro é o daemon Kafka.

Configuração de Nó Único - Agente Único

Nesta configuração, você tem uma única instância do ZooKeeper e do ID do corretor. A seguir estão as etapas para configurá-lo -

Creating a Kafka Topic- Kafka fornece um utilitário de linha de comando denominado kafka-topics.sh para criar tópicos no servidor. Abra o novo terminal e digite o exemplo abaixo.

Syntax

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 
--partitions 1 --topic topic-name

Example

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1   
--partitions 1 --topic Hello-Kafka

Acabamos de criar um tópico chamado Hello-Kafka com uma única partição e um fator de réplica. A saída criada acima será semelhante à seguinte saída -

Output- Criado tópico Hello-Kafka

Uma vez que o tópico foi criado, você pode obter a notificação na janela do terminal do broker Kafka e o log para o tópico criado especificado em “/ tmp / kafka-logs /“ no arquivo config / server.properties.

Lista de Tópicos

Para obter uma lista de tópicos no servidor Kafka, você pode usar o seguinte comando -

Syntax

bin/kafka-topics.sh --list --zookeeper localhost:2181

Output

Hello-Kafka

Como criamos um tópico, ele listará apenas Hello-Kafka . Suponha que, se você criar mais de um tópico, obterá os nomes dos tópicos na saída.

Comece o produtor a enviar mensagens

Syntax

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic topic-name

A partir da sintaxe acima, dois parâmetros principais são necessários para o cliente de linha de comando do produtor -

Broker-list- A lista de corretores para os quais queremos enviar as mensagens. Neste caso, temos apenas um corretor. O arquivo Config / server.properties contém o id da porta do broker, pois sabemos que nosso broker está escutando na porta 9092, então você pode especificá-lo diretamente.

Nome do tópico - Aqui está um exemplo para o nome do tópico.

Example

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Hello-Kafka

O produtor aguardará a entrada de stdin e publicará no cluster Kafka. Por padrão, cada nova linha é publicada como uma nova mensagem, então as propriedades do produtor padrão são especificadas no arquivo config / producer.properties . Agora você pode digitar algumas linhas de mensagens no terminal, conforme mostrado abaixo.

Output

$ bin/kafka-console-producer.sh --broker-list localhost:9092 
--topic Hello-Kafka[2016-01-16 13:50:45,931] 
WARN property topic is not valid (kafka.utils.Verifia-bleProperties)
Hello
My first message
My second message

Comece o consumidor a receber mensagens

Semelhante ao produtor, as propriedades do consumidor padrão são especificadas no arquivo config / consumer.proper-ties . Abra um novo terminal e digite a sintaxe abaixo para consumir mensagens.

Syntax

bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic topic-name 
--from-beginning

Example

bin/kafka-console-consumer.sh --zookeeper localhost:2181 —topic Hello-Kafka 
--from-beginning

Output

Hello
My first message
My second message

Por fim, você pode inserir mensagens do terminal do produtor e vê-las aparecendo no terminal do consumidor. A partir de agora, você tem um bom conhecimento sobre o cluster de nó único com um único broker. Vamos agora passar para a configuração de vários corretores.

Configuração de Nó Único-Vários Brokers

Antes de passar para a configuração de cluster de vários brokers, primeiro inicie o servidor ZooKeeper.

Create Multiple Kafka Brokers- Já temos uma instância do broker Kafka em con-fig / server.properties. Agora precisamos de várias instâncias do broker, então copie o arquivo server.prop-erties existente em dois novos arquivos de configuração e renomeie-o como server-one.properties e server-two.prop-erties. Em seguida, edite os dois novos arquivos e atribua as seguintes alterações -

config / server-one.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
# The port the socket server listens on
port=9093
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-1

config / server-two.properties

# The id of the broker. This must be set to a unique integer for each broker.
broker.id=2
# The port the socket server listens on
port=9094
# A comma seperated list of directories under which to store log files
log.dirs=/tmp/kafka-logs-2

Start Multiple Brokers- Após todas as mudanças terem sido feitas em três servidores, abra três novos terminais para iniciar cada corretor um por um.

Broker1
bin/kafka-server-start.sh config/server.properties
Broker2
bin/kafka-server-start.sh config/server-one.properties
Broker3
bin/kafka-server-start.sh config/server-two.properties

Agora temos três corretores diferentes em execução na máquina. Experimente você mesmo para verificar todos os daemons digitandojps no terminal ZooKeeper, então você veria a resposta.

Criando um Tópico

Vamos atribuir o valor do fator de replicação como três para este tópico, porque temos três corretores diferentes em execução. Se você tiver dois corretores, o valor de réplica atribuído será dois.

Syntax

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 
-partitions 1 --topic topic-name

Example

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 
-partitions 1 --topic Multibrokerapplication

Output

created topic “Multibrokerapplication”

O comando Descrever é usado para verificar qual corretor está ouvindo no tópico atual criado, conforme mostrado abaixo -

bin/kafka-topics.sh --describe --zookeeper localhost:2181 
--topic Multibrokerappli-cation

Output

bin/kafka-topics.sh --describe --zookeeper localhost:2181 
--topic Multibrokerappli-cation

Topic:Multibrokerapplication    PartitionCount:1 
ReplicationFactor:3 Configs:
   
Topic:Multibrokerapplication Partition:0 Leader:0 
Replicas:0,2,1 Isr:0,2,1

A partir da saída acima, podemos concluir que a primeira linha fornece um resumo de todas as partições, mostrando o nome do tópico, a contagem de partições e o fator de replicação que já escolhemos. Na segunda linha, cada nó será o líder para uma parte selecionada aleatoriamente das partições.

Em nosso caso, vemos que nosso primeiro corretor (com broker.id 0) é o líder. Then Replicas: 0,2,1 significa que todos os brokers replicam o tópico, finalmente, Isr é o conjunto de réplicas sincronizadas . Bem, este é o subconjunto de réplicas que estão atualmente vivas e capturadas pelo líder.

Comece o produtor a enviar mensagens

Este procedimento permanece o mesmo que na configuração do corretor único.

Example

bin/kafka-console-producer.sh --broker-list localhost:9092 
--topic Multibrokerapplication

Output

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic Multibrokerapplication
[2016-01-20 19:27:21,045] WARN Property topic is not valid (kafka.utils.Verifia-bleProperties)
This is single node-multi broker demo
This is the second message

Comece o consumidor a receber mensagens

Este procedimento permanece o mesmo mostrado na configuração do corretor único.

Example

bin/kafka-console-consumer.sh --zookeeper localhost:2181 
—topic Multibrokerapplica-tion --from-beginning

Output

bin/kafka-console-consumer.sh --zookeeper localhost:2181 
—topic Multibrokerapplica-tion —from-beginning
This is single node-multi broker demo
This is the second message

Operações Básicas de Tópico

Neste capítulo, discutiremos as várias operações básicas de tópicos.

Modificando um Tópico

Como você já entendeu como criar um tópico no Kafka Cluster. Agora vamos modificar um tópico criado usando o seguinte comando

Syntax

bin/kafka-topics.sh —zookeeper localhost:2181 --alter --topic topic_name 
--parti-tions count

Example

We have already created a topic “Hello-Kafka” with single partition count and one replica factor. 
Now using “alter” command we have changed the partition count.
bin/kafka-topics.sh --zookeeper localhost:2181 
--alter --topic Hello-kafka --parti-tions 2

Output

WARNING: If partitions are increased for a topic that has a key, 
the partition logic or ordering of the messages will be affected
Adding partitions succeeded!

Excluindo um Tópico

Para excluir um tópico, você pode usar a seguinte sintaxe.

Syntax

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic topic_name

Example

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic Hello-kafka

Output

> Topic Hello-kafka marked for deletion

Note −Isso não terá impacto se delete.topic.enable não está definido como verdadeiro