kafka 安装与配置

环境

Ubuntu18.04
四台机器:Ubuntu1,Ubuntu2,Ubuntu3,Ubuntu4
ZooKeeper3.4.13
kafka_2.12-2.1.1

下载kafka

kafka下载地址

安装并启动ZooKeeper

ZooKeeper安装与配置

解压kafka

tar -zxvf kafka_2.12-2.1.1.tgz -C ~/kafka

配置kafka

配置文件在kafka/config下。

配置server.properties

broker.id=1  #主机的id,每台机器都要配置不一样的正数
log.dirs=/home/czq/kafka/kafka_2.12-2.1.1/tmpdata #日志文件的存储目录,记得一定要改,别放/tmp下,不然重启就没了
zookeeper.connect=Ubuntu3:2181,Ubuntu4:2181  #指定ZooKeeper主机和端口

其他配置可以默认,如果想看看可以看这篇博客:apache kafka系列之server.properties配置文件参数说明

分发kafka

将kafka分发到每一节点

scp -r kafka/ Ubuntu2:/home/czq
scp -r kafka/ Ubuntu3:/home/czq
scp -r kafka/ Ubuntu4:/home/czq

记住修改每一个节点的 broker. id

启动kafka的broker

每个kafka节点都运行下面这条语句,开启kafka
需要注意的是: 后面的路径填写是配置文件对于当前所在目录的相对路径
不然会报找不到文件的错。

./kafka-server-start.sh ../config/server.properties #在bin目录时这样写
bin/kafka-server-start.sh config/server.properties #在kafka根目录时这样写

创建一个话题

创建一个话题
告知ZooKeeper所在节点和端口号(只需要告知一个,因为他会告知整个集群),设置副本数为1,划分1个分区,话题名字叫test

bin/kafka-topics.sh --create --zookeeper Ubuntu3:2181 --replication-factor 1 --partitions 1 --topic test
#bin/kafka-topics.sh --create --zookeeper zk的主机号:端口号 --replication-factor 副本数 --partitions 分区数 --topic 话题名

查看当前都有哪些话题

bin/kafka-topics.sh --list --zookeeper Ubuntu3:2181
#bin/kafka-topics.sh --list --zookeeper zk的主机号:端口号

发送一些消息

Kafka附带一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到Kafka集群。默认情况下,每行将作为单独的消息发送。
运行命令行客户端就会生成一个生产者(发消息的人)。然后你就可以发消息了。

bin/kafka-console-producer.sh --broker-list Ubuntu1:9092 --topic test
#bin/kafka-console-producer.sh --broker-list 生产者的主机号:端口号 --topic 话题名

然后你可以发一些消息:

i love kafka

输入完后使用ctrl+c停止。

启动消费者

消费者是接受消息的人。
你可以在任意一个broker上执行。但你消息来源一定要设置为生产者所在的节点。

bin/kafka-console-consumer.sh --bootstrap-server Ubuntu1:9092 --topic test --from-beginning
#bin/kafka-console-consumer.sh --bootstrap-server 生产者的主机号:端口号 --topic 话题名 --from-beginning(把开始至今所有消息都接受)

关闭kafka的broker

bin/kafka-server-stop.sh

一个节点设置多个broker

其实,一台机器可以设置多个broker,但这不是必须的。如果你想这样做,那就如下设置。

首先,我们为每个代理创建一个配置文件

cp config/server.properties config/server-1.properties
cp config/server.properties config/server-2.properties

现在编辑这些新文件并设置以下属性:

config/server-1.properties:
    broker.id=1
    listeners=PLAINTEXT://:9093
    log.dirs=/home/czq/kafka/kafka_2.12-2.1.1/tmpdata/kafka-logs-1
 
config/server-2.properties:
    broker.id=2
    listeners=PLAINTEXT://:9094
    log.dirs=/home/czq/kafka/kafka_2.12-2.1.1/tmpdata/kafka-logs-2

端口一定要不一样,id一定要不一样,dir不要用/tmp

然后启动两个broker

bin/kafka-server-start.sh config/server-1.properties &
...
bin/kafka-server-start.sh config/server-2.properties &
...

现在创建一个副本数为3的新话题:

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

现在我们来看看我们的broker在干嘛

bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
#输出:
Topic:my-replicated-topic   PartitionCount:1    ReplicationFactor:3 Configs:
    Topic: my-replicated-topic  Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 1,2,0

“leader”是给定分区的所有读写的节点的领导者。每个节点将随机成为分区的领导者。
“replicas”是分区日志的副本节点,无论它们是否为领导者,无论是否处于活动状态。
“isr”被领到节点捕捉到的副本节点列表的子集。

使用生产者和消费者与之前步骤一致,不赘述了。

后记

一开始配置kafka的时候我是觉得奇怪的。
因为在配置文件中居然没提及其他节点的信息。
配置玩后才知道,他在使用中才去配置主机号和端口号。
感觉和其他分布式框架不太一样呢。
挺灵活的,但是太繁琐了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值