kafka 单节点的单broker和多broker的安装以及集群的安装

Apache Kafka 是一个开源消息系统,由 Scala 写成。是由 Apache 软件基金会开发的一个开源消息系统项目。Kafka 是一个分布式消息队列:生产者、消费者的功能。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。

官网:http://kafka.apache.org/,官网可以查看Kafka的介绍。
官网也提供了Kafka安装配置的示例,可以参考,地址:http://kafka.apache.org/quickstart
本文主要介绍hadoop集群中Kafka的单点的安装问题:

第一步:kafka的安装需要的基础软件

1.首先需要安装zookeeper,zookeeper的下载地址https://apache.org/dist/zookeeper/,可以下载Kafka的稳定版apache-zookeeper-3.5.5-bin.tar.gz ,然后解压zookeeper到指定的目录:

# 解压安装目录
tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz -C /export/servers

2.修改配置文件zoo.cfg

# 进入kafka的conf目录复制zoo_sample.cfg 为zoo.cfg
cp zoo_sample.cfg zoo.cfg
# 编辑配置文件
vim zoo.cfg
# 修改数据的存储目录 dataDir=/export/servers/zookeeper-3.4.9/zkdatas
dataDir=/export/servers/zookeeper-3.4.9/zkdatas
# 打开以下两行的注释
autopurge.snapRetainCount=3
autopurge.purgeInterval=1

添加myid配置文件
在zoo.cfg中配置的dataDir目录下,创建myid文件:

# 创建myid
echo 1 > myid

如果是分布式的zookeeper,在配置文件zoo.cfg中添加如下三行代码,然后分发zookeeper安装目录到其他的节点。

server.1=master:2888:3888
server.2=slave01:2888:3888
server.3=slave02:2888:3888

将zookeeper的安装包分发到各个节点:
修改myid的值:
slave01

# 修改myid
echo 2 > myid

slave02

# 修改myid
echo 3 > myid

3.进入bin目录下启动zookeeper,分布式可以分别启动节点或者编写脚本,同时启动

# 启动zookeeper服务端
zkServer.sh start
# 关闭zookeeper服务端
zkServer.sh stop

可以使用jps 查看zookeeper的进程
之前安装hadoop集群已经有zookeeper只需要配置之后开启就ok

第二步kafka的安装

1.单节点的Kafka单个broker

1.1官网下载Kafka,地址:http://kafka.apache.org/downloads,选择二进制文件kafka_2.11-2.1.1.tgz,然后解压Kafka到指定的目录:

# 解压到目录/export/servers
tar -zxvf kafka_2.11-2.1.1.tgz -C /export/servers

注意:Kafka自带zookeeper,但是一般使用独立安装的Kafka
1.2修改配置文件

# 进入/etc/profile
vim /etc/profile
# 添加一下两行代码
# kafka的安装路径
export KAFKA_HOME=/export/servers/kafka_2.11-2.1.1
export PATH=:$KAFKA_HOME/bin:$PATH

修改config目录下server.properties文件

# 修改代码
# broker进程编号,全局唯一的
broker.id=0
# 监听的IP和端口号,默认端口号为9092
listeners=PLAINTEXT://192.168.141.130:9092
# 日志文件的路径
log.dirs=/export/servers/kafka_2.11-2.1.1/tmp/kafka-logs
# zookeeper的链接地址,端口号默认是2181
zookeeper.connect=192.168.141.130:2181

1.3Kafka的启动
Kafka依赖zookeeper保证系统的可以性以及信息的管理,所以启动之前,必须先启动zookeeper并正常运行。

# Kafka启动
# 进入bin目录,开启Kafka进程,以守护进程后台启动
kafka-server-start.sh -daemon ../config/server.properties &
# 创建topic
kafka-topics.sh --create --zookeeper 192.168.141.130:2181 --replication-factor 1 --partitions 1 --topic test
# 显示所有的topic
kafka-topics.sh --list --zookeeper 192.168.141.130:2181
# 查看所有topic的详细信息
kafka-topics.sh --describe --zookeeper 192.168.141.130:2181
# 开启生产者生产消息
kafka-console-producer.sh --broker-list 192.168.141.130:9092 --topic test
# 开启消费者消费消息
kafka-console-consumer.sh --bootstrap-server 192.168.141.130:9092 --from-beginning --topic test 

参数说明:

注意:可以同过jps -m 查看启动的Kafka进程
在这里插入图片描述
1.4测试生产者生产消息和消费者消费消息
生产者生产消息 hello kafka,生产者生产消息后消费者窗口会出现提示,消费者接收到消息
在这里插入图片描述
消费者消费hello kafka
在这里插入图片描述

2.单节点的Kafka多个broker

多个broker需要多个server.properties配置文件,进入Kafka的conf配置文件下复制server.properties文件,分别命名为server-1.properties和server-2.properties,新建立日志文件/tmp/kafka-logs-1和/tmp/kafka-logs-1然后修改配置文件的参数如下所示:
2.1创建配置文件和日志文件:

# 复制配置文件
cp server.properties server-1.properties
cp server.properties server-2.properties
# 新建日志文件
mkdir -p ./tmp/kafka-logs-1
mkdir -p ./tmp/kafka-logs-2

2.2修改config目录下server-1.properties文件

# 修改代码
# broker进程编号,全局唯一的
broker.id=1
# 监听的IP和端口号,默认端口号为9092
listeners=PLAINTEXT://192.168.141.130:9093
# 日志文件的路径
log.dirs=/export/servers/kafka_2.11-2.1.1/tmp/kafka-logs-1
# zookeeper的链接地址,端口号默认是2181
zookeeper.connect=192.168.141.130:2181

修改config目录下server-2.properties文件

# 修改代码
# broker进程编号,全局唯一的
broker.id=0
# 监听的IP和端口号,默认端口号为9092
listeners=PLAINTEXT://192.168.141.130:9094
# 日志文件的路径
log.dirs=/export/servers/kafka_2.11-2.1.1/tmp/kafka-logs-2
# zookeeper的链接地址,端口号默认是2181
zookeeper.connect=192.168.141.130:2181

2.3分别启动多个Kafka进程
进入Kafka的bin目录以配置server-1.properties和server-2.properties的方式启动两个Kafka进程。

# 以守护进程启动server-1.properties进程
kafka-server-start.sh -daemon ../config/server-1.properties &
# 以守护进程启动server-2.properties进程
kafka-server-start.sh -daemon ../config/server-1.properties &

使用jps -m查看启动的进程,可以看到以不同配置文件启动的三个Kafka进程:
在这里插入图片描述
2.4 创建新的主题,开启生产者和消费者

# 创建topic
 kafka-topics.sh --create --zookeeper 192.168.141.130:2181 --replication-factor 3 --partitions 1 --topic multi-test
# 查看multi-test topic的详情
kafka-topics.sh --describe --zookeeper 192.168.141.130:2181 --topic multi-test
# 开启生产者
kafka-console-producer.sh --broker-list 192.168.141.130:9092,192.168.141.130:9093,192.168.141.130:9094 --topic multi-test
# 开启消费者
 kafka-console-consumer.sh --bootstrap-server 192.168.141.130:9094 --topic multi-test --from-beginning

multi-test主题的详情:
在这里插入图片描述
注意:通过查看multi-test topic的详情,可以看出leader为broker_id为2的Kafka进程
2.5测试
消费者消费消息
在这里插入图片描述
生产者生产消息
在这里插入图片描述

3.多节点的(集群的)kafka配置

将配置好的Kafka分发到其他的节点,修该配置文件。以三台机器为示例,将主机master的kafka发送到slave01、slave02两台机器,修改conf配置文件下面的server.properties文件:
3.1修改配置文件

# 编辑配置文件
vim server.properties

master的配置如下:

# broker进程id,每台机器唯一标识
broker.id=0
# 监听的端口
listeners=PLAINTEXT://192.168.141.130:9092
# zookeeper链接的ip和端口
zookeeper.connect=192.168.141.130:2181,192.168.141.140:2181;192.168.141.150:2181

slave01的配置如下:

# broker进程id,每台机器唯一标识
broker.id=1
# 监听的端口
listeners=PLAINTEXT://192.168.141.140:9092
# zookeeper链接的ip和端口
zookeeper.connect=192.168.141.130:2181,192.168.141.140:2181;192.168.141.150:2181

slave02的配置如下:

# broker进程id,每台机器唯一标识
broker.id=2
# 监听的端口
listeners=PLAINTEXT://192.168.141.150:9092
# zookeeper链接的ip和端口
zookeeper.connect=192.168.141.130:2181,192.168.141.140:2181;192.168.141.150:2181

3.2删除或者修改kafka日志文件中meta.properties
在server.properties中查看日志文件的配置路径,如下图所示,在日志文件下查看meta.properties中broker.id的ID号和server.properties中的是否一致,不一致修改相同,或者直接清空日志文件下的日志文件信息,初始运行会自动生成meta信息,若不存在meta.properties文件,则不用修改或者删除。
在这里插入图片描述
注意:之前kafka安装之后,进行相关的测试,日志文件中生成了和主机对应的meta信息,发送到从机之后,要修改或者删除之前的meta信息。
3.3创建topic以及kafka启动
进入kafka的bin目录下,创建新的topic

kafka-topics.sh --create --zookeeper master:2181,salve01:2181,slave02:2181  --replication-factor 3 --partitions 3 --topic testcluster

查看topic的信息

kafka-topics.sh --describe --zookeeper master:2181,salve01:2181,slave02:2181  --topic testcluster

开启master的生产者

 kafka-console-producer.sh --broker-list master:9092,slave01:9092,slave02:9092 --topic testcluster

开启master消费者

kafka-console-consumer.sh --bootstrap-server master:9092 --from-beginning --topic testcluster

开启slave01消费者

kafka-console-consumer.sh --bootstrap-server slave01:9092 --topic testcluster --from-beginning

开启slave02消费者

kafka-console-consumer.sh --bootstrap-server slave02:9092 --topic testcluster --from-beginning

3.3测试结果
master主机生产者
在这里插入图片描述
master主机消费者
在这里插入图片描述
slave01消费者
在这里插入图片描述
slave02消费者
在这里插入图片描述

发布了27 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_40122615/article/details/101430245