橘子学kafka之基础命令使用

Posted 橘子在努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了橘子学kafka之基础命令使用相关的知识,希望对你有一定的参考价值。

本系列主要开始处理关于kafka的一些技术知识点,尽量会以代码和实际命令为主要表达形式来做表现。
本文主要是关于如何在客户端使用命令做一个描述,其实我本来不想写的,但是今天在公司有同事居然不会,所以我觉得还是描述一下。而且在你没有代码的时候,运维端你要操作的时候这个其实也是有点用的。
本文目的是如何使用命令,以及如何在0基础的时候查看帮助文档。后续会不断完善,这里先做一个初步的描述,后面我发现其他的继续加上去。

一、位置

首先我们来看看这一套命令的位置,位于你kafka安装目录下面的bin目录下面。

[root@iZ2ze1q2h6sy9dblhemmhmZ bin]# pwd
/opt/kafka_2.12-2.1.1/bin
[root@iZ2ze1q2h6sy9dblhemmhmZ bin]# ls
connect-distributed.sh        kafka-console-consumer.sh    kafka-delete-records.sh              kafka-producer-perf-test.sh    kafka-server-stop.sh                trogdor.sh                       zookeeper-shell.sh
connect-standalone.sh         kafka-console-producer.sh    kafka-dump-log.sh                    kafka-reassign-partitions.sh   kafka-streams-application-reset.sh  windows
kafka-acls.sh                 kafka-consumer-groups.sh     kafka-log-dirs.sh                    kafka-replica-verification.sh  kafka-topics.sh                     zookeeper-security-migration.sh
kafka-broker-api-versions.sh  kafka-consumer-perf-test.sh  kafka-mirror-maker.sh                kafka-run-class.sh             kafka-verifiable-consumer.sh        zookeeper-server-start.sh
kafka-configs.sh              kafka-delegation-tokens.sh   kafka-preferred-replica-election.sh  kafka-server-start.sh          kafka-verifiable-producer.sh        zookeeper-server-stop.sh

我们看到在这个路径下面有一系列关于kafka客户端操作的命令,我们只说一些常用的,不常用的后面用到我加上去。

kafka-console-consumer.sh:关于消费消息时候使用的指令
kafka-console-producer.sh:关于生产消息时候使用的指令
kafka-topics.sh:关于操作topic主题时候使用的指令

下面我们就一个个开始看看怎么用。

二、broker

broker端主要就是启动kafka服务以及启动zk服务。

# 启动kafka
./kafka-server-start.sh -daemon ../config/server.properties

# 启动zk
./zkServer.sh start

三、主题

主题的概念我们暂且在第一篇操作时候按下不表,后面我们做原理学习的时候再说。这里默认会了。
我们先来看一个操作,就是查看官方帮助文档。

1、查看参数

进入bin目录下面:
此时你不知道kafka的主题侧有啥参数,你就输入kafka-topics.sh这个,然后回车,你会看到官方所有的参数都会列出来。

# 这一行是在说这个命令./kafka-topics.sh的作用就是增删改查描述主题信息
Create, delete, describe, or change a topic. 
# 下面两列就是参数和该参数的描述
Option                                   Description                            
------    
#动作类参数: 当你需要修改主题的分区,副本等配置的时候需要加这个参数                              
--alter                                  Alter the number of partitions,        
                                           replica assignment, and/or           
                                           configuration for the topic.         
--config <String: name=value>            A topic configuration override for the 
                                           topic being created or altered.The   
                                           following is a list of valid         
                                           configurations:                      
                                         	cleanup.policy                        
                                         	compression.type                      
                                         	delete.retention.ms                   
                                         	file.delete.delay.ms                  
                                         	flush.messages                        
                                         	flush.ms                              
                                         	follower.replication.throttled.       
                                           replicas                             
                                         	index.interval.bytes                  
                                         	leader.replication.throttled.replicas 
                                         	max.message.bytes                     
                                         	message.downconversion.enable         
                                         	message.format.version                
                                         	message.timestamp.difference.max.ms   
                                         	message.timestamp.type                
                                         	min.cleanable.dirty.ratio             
                                         	min.compaction.lag.ms                 
                                         	min.insync.replicas                   
                                         	preallocate                           
                                         	retention.bytes                       
                                         	retention.ms                          
                                         	segment.bytes                         
                                         	segment.index.bytes                   
                                         	segment.jitter.ms                     
                                         	segment.ms                            
                                         	unclean.leader.election.enable        
                                         See the Kafka documentation for full   
                                           details on the topic configs.    
# 动作类参数:当你创建主题的时候就需要加这个    
--create                                 Create a new topic.                    
# 动作类参数:当你删除主题的时候就需要加这个
--delete                                 Delete a topic                         
--delete-config <String: name>           A topic configuration override to be   
                                           removed for an existing topic (see   
                                           the list of configurations under the 
                                           --config option).                    
# 动作类参数:当你要查看主题的详细信息的时候就需要加这个
--describe                               List details for the given topics.     
--disable-rack-aware                     Disable rack aware replica assignment  
--exclude-internal                       exclude internal topics when running   
                                           list or describe command. The        
                                           internal topics will be listed by    
                                           default                              
--force                                  Suppress console prompts               
# 输出参数描述
--help                                   Print usage information.               
--if-exists                              if set when altering or deleting       
                                           topics, the action will only execute 
                                           if the topic exists                  
--if-not-exists                          if set when creating topics, the       
                                           action will only execute if the      
                                           topic does not already exist         
# 动作类参数:查看所有主题的时候加这个参数
--list                                   List all available topics.             
# 创建主题的时候指定分区个数
--partitions <Integer: # of partitions>  The number of partitions for the topic 
                                           being created or altered (WARNING:   
                                           If partitions are increased for a    
                                           topic that has a key, the partition  
                                           logic or ordering of the messages    
                                           will be affected                     
--replica-assignment <String:            A list of manual partition-to-broker   
  broker_id_for_part1_replica1 :           assignments for the topic being      
  broker_id_for_part1_replica2 ,           created or altered.                  
  broker_id_for_part2_replica1 :                                                
  broker_id_for_part2_replica2 , ...>                                           
# 创建主题的时候指定副本个数
--replication-factor <Integer:           The replication factor for each        
  replication factor>                      partition in the topic being created.
# 你要操作那个主题,这个参数后面指定
--topic <String: topic>                  The topic to be create, alter or       
                                           describe. Can also accept a regular  
                                           expression except for --create option
--topics-with-overrides                  if set when describing topics, only    
                                           show topics that have overridden     
                                           configs                              
--unavailable-partitions                 if set when describing topics, only    
                                           show partitions whose leader is not  
                                           available                            
--under-replicated-partitions            if set when describing topics, only    
                                           show under replicated partitions     
# 对topic操作必须设置连接哪个zk
--zookeeper <String: hosts>              REQUIRED: The connection string for    
                                           the zookeeper connection in the form 
                                           host:port. Multiple hosts can be     
                                           given to allow fail-over.        

OK,我们就先简单的对上面几个参数加一个注释,注意我把参数分为了动作类参数和非动作类参数,动作类参数就是一类型的操作,这种动作类的操作一个操作就只能操作一个,不能多个存在。
非动作类参数是在动作类参数上附加的。我们来演示一波。具体怎么用。

2、使用参数

我们这里就把上面这几个参数列出来再这里,清晰的看一下:

# 动作类参数:当你创建主题的时候就需要加这个    
--create                                                   
# 动作类参数:当你删除主题的时候就需要加这个
--delete                                                       
--delete-config <String: name>                           
# 动作类参数:当你要查看主题的详细信息的时候就需要加这个
--describe                                   
# 输出参数描述
--help                                                   
# 动作类参数:查看所有主题列表的时候加这个参数
--list                                            
# 创建主题的时候指定分区个数
--partitions <Integer                   
# 创建主题的时候指定副本个数
--replication-factor <Integer:          
# 你要操作那个主题,这个参数后面指定
--topic <String: topic>                
# 对topic操作必须设置连接哪个zk目录,因为不同目录可以放置相同名字的主题
--zookeeper <String: hosts>                     

我们就围绕这几个参数来操作一下主题。

2.1、创建主题

我们首先明确,创建主题的动作是–create
其次你要创建主题,那你需要操作主题所以需要–topic
然后你要操作主题,那你必须指定zk路径,我目前已经在zk的根目录下面创建了一个myKafka的路径,我就直接用了。所以你需要–zookeeper这个参数。
然后你要创建主题,你得设置副本数,所以你得有–replication-factor
然后你要创建主题,你得设置分区数,所以你得有–partitions
基于此,你基本过了一遍那些topic后面的参数,能加的也就这几个,所以我们可以得到这个命令了。

./kafka-topics.sh --zookeeper localhost:2181/myKafka  --topic topic-levi --partitions 4 --replication-factor 1  --create
这样我们就在zk的/myKafka 路径下面创建出一个分区为4,副本个数为1(其实就是leader),名字叫topic-levi的主题了,就是这么自然。

2.2、查看主题

在我们创建好主题之后,有时候我们要查看一下这个主题的详细信息,比如分区数,副本数,等等各种信息。也或者是你刚接触一个集群,你想了解一下该集群的kafka信息。

1、查看主题列表

我们看到上面列出了–list这个动作参数。
查看主题集合列表,你得加–list参数
你得指定zk地址。–zookeeper,注意这里也要指定好zk的目录,因为多个目录可以存在相同名字的主题
因为你并不操作主题,所以无需指定–topic,所以此时就足够了。
于是我们就得到这个指令的操作全命令。

./kafka-topics.sh --zookeeper localhost:2181/myKafka --list
__consumer_offsets
kafka
topic-levi
topic_01
topic_1
topic_2
我们看到了这是我这个目录下面所有的主题信息。都已经列出来了。

2、查看主题详情

上面我们列出了主题列表的参数,现在我们假如想看一下topic-levi这个主题的详细信息,我们知道是
–describe 这个动作参数。
因为我们要指定topic所以我们要加一个属性参数–topic
而且我们要具体查看主题,所以需要指定zk地址,所以需要–zookeeper
于是我们此时就可以得到这个指令:

 ./kafka-topics.sh --zookeeper localhost:2181/myKafka --topic topic-levi --describe
 Topic:topic-levi	PartitionCount:4	ReplicationFactor:1	Configs:
	Topic: topic-levi	Partition: 0	Leader: 0	Replicas: 0	Isr: 0
	Topic: topic-levi	Partition: 1	Leader: 0	Replicas: 0	Isr: 0
	Topic: topic-levi	Partition: 2	Leader: 0	Replicas: 0	Isr: 0
	Topic: topic-levi	Partition: 3	Leader: 0	Replicas: 0	Isr: 0
我们看到主题分区数一共是4个,副本数就是1个,分区分别是0,1,2,3,其余各种信息后面再说。

四、生产者

生产者的使用方式和上面的主题是一样的,我们只需要按照规范文档操作即可,

./kafka-console-producer.sh  --topic topic-levi --broker-list localhost:9092
输入回车,你直接输入投递消息即可。

五、消费者

消费者的使用方式和上面的主题是一样的,我们只需要按照规范文档操作即可,

./kafka-console-consumer.sh  --bootstrap-server localhost:9092 --topic topic-levi --group group1

输入回车,就能消费订阅的主题消息了。这里注意一下,你消费的broker需要在--bootstrap-server这个参数追加,其次我在后面指定了消费者组的参数,同一个消费者组消费主题消息是互斥的。这个后面再说,其次你还可以加上消费的策略,--from-beginning就是从一开始消费,或者可以从当前进度消费,这个后面概念的时候再说。

六、总结

这个其实是个入门操作文档,大部分时间我们都是在编码中处理消息的。所以这个可能更偏向运维时候使用,但是这个是基础,所以作为开发还是要掌握的。

以上是关于橘子学kafka之基础命令使用的主要内容,如果未能解决你的问题,请参考以下文章

一起学Spring之基础篇

Docker重学系列之基础知识回顾

一起学Spring之Web基础篇

从面试角度一文学完Kafka

前端学HTTP之网络基础

全网最快掌握机器学习之深度学习之神经网络数学基础(附源代码)