本系列主要开始处理关于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主题时候使用的指令
下面我们就一个个开始看看怎么用。
二、主题
主题的概念我们暂且在第一篇操作时候按下不表,后面我们做原理学习的时候再说。这里默认会了。
我们先来看一个操作,就是查看官方帮助文档。
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的主题了,就是这么自然。
三、生产者
四、消费者
这次就到这里,我去开会。