文章目录

  • 一、启动
  • 1、启动自带的Zookeeper
  • 2、启动Kafka
  • 二、Topic操作
  • 1、创建一个topic
  • 关于Kafka和Zookeeper端口号
  • 2、查看broker下指定的Topic信息
  • 3、写入topic
  • 4、查看topic事件
  • 5、查看topic列表
  • 6、关闭自带的Zookeeper
  • 7、关闭Kafka
  • 三、不使用Zookeeper启动Kafka
  • 1、修改配置文件
  • 2、格式化目录生成文件
  • 3、启动Kafka


昨天历经万难终于装好了单机的Kafka3.2.1并且使用自带的zookeeper启动了。

Kafka下,/bin目录中有许多基本命令(涉及较难的zookeeper安全等暂时不了解)
学习一下:

一、启动

1、启动自带的Zookeeper

zookeeper-server-start.sh

命令:

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

官网上的命令没有 & ,如果不加,按下ctrl+c这个进程就没了。
加上这个后台运行,就算ctrl+c也不会结束这个进程。

2、启动Kafka

kafka-server-start.sh
命令:

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

使用jps命令可以看到ZookeeperKafka都成功启动了。

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_bootstrap

二、Topic操作

1、创建一个topic

bin/kafka-topics.sh --create --topic topic_test --bootstrap-server master:9092

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_java-zookeeper_02


kafka sasl 配置 无zookeeper kafka 不需要zookeeper_java-zookeeper_03


创建成功。

topic相关命令基本都是这样的格式:

  • bin/kafka-topics.sh topic命令
  • --create --topic 创建topic
  • topic_test 要创建的topic名称.
  • --bootstrap-server + broker主机名称:Kafka端口号
关于Kafka和Zookeeper端口号

这里要解释一下:

  • server.properties文件里,zookeeper.connect配置的是各个机器的IP地址及它们的zookeeper端口号
  • Kafka当前broker的端口号配置:
    模板为:

advertised.listeners=PLAINTEXT://your.host.name:9092

举例:

advertised.listeners=PLAINTEXT://master:9092

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_zookeeper_04


另外有关listeneradvertised.listeners还需要进一步了解。

可自行百度。

2、查看broker下指定的Topic信息

bin/kafka-topics.sh --describe --topic quickstart-events --bootstrap-server master:9092

执行结果:

可以看到,输出这个

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_学习_05

3、写入topic

bin/kafka-console-producer.sh --topic topic_test --bootstrap-server master:9092

执行

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_java-zookeeper_06


随便输入,回车就能发送。

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_zookeeper_07

4、查看topic事件

bin/kafka-console-consumer.sh --topic topic_test --from-beginning --bootstrap-server master:9092

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_java-zookeeper_08


说明刚才的写入成功了。

(提示:--前面的空格千万不能少,不然就不能消费到数据了)

5、查看topic列表

bin/kafka-topics.sh --list --bootstrap-server master:9092

6、关闭自带的Zookeeper

zookeeper-server-stop.sh

bin/zookeeper-server-stop.sh

7、关闭Kafka

bin/kafka-server-stop.sh

还有消费者组之类的有时间学习之后,再补充记录吧……

三、不使用Zookeeper启动Kafka

不使用Zookeeper启动Kafka,配置文件则是放在了config/kraft文件夹下:

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_zookeeper_09

1、修改配置文件

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_zookeeper_10

node.id=0
controller.quorum.voters=0@mster:9093

另外里面还需要更改日志文件路径,我在kraft下新建了一个:

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_学习_11


然后:

log.dirs=/home/software/kafka/config/kraft/kraft-logs

listeners=PLAINTEXT://master:9092,CONTROLLER://master:9093

advertised.listeners=PLAINTEXT://master:9092

其它的基本不用动。

2、格式化目录生成文件

kafka目录下执行命令:

bin/kafka-storage.sh random-uuid

为当前节点生成唯一的一个id

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_bootstrap_12


执行格式化命令:

bin/kafka-storage.sh format -t 0wkP3X0tSfqUg0g4a08SnQ -c /home/software/kafka/config/kraft/server.properties

上面这个命令里:

-t 后面是刚才生成的一串字符

-c 后面是kraftserver.properties的绝对路径

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_bootstrap_13

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_bootstrap_14


执行完毕就能看到我指定的日志文件夹下,多了一个meta.properties

里面的内容就是我们刚才配置的和生成的。

3、启动Kafka

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

(在不使用Zookeeper的前提下,加上&保证它后台运行)

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_java-zookeeper_15


启动成功,突然发现可视化工具是一定要指定zookeeper的,淦!

用命令查看却发现,提示没有数据,并没有说没有这个topic

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_java-zookeeper_16


用命令重新对这个topic发送消息:

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_学习_17


再次查看:

kafka sasl 配置 无zookeeper kafka 不需要zookeeper_学习_18


只有这些消息?是因为启动方式改变会使数据丢失吗?

当前只有一个broker,一个消费者。

考虑到接下来要写代码,为了方便调试,在主机使用可视化工具更方便。

我还是选择配合zookeeper使用。