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