kafka安装教程

151 阅读4分钟

1. 软件版本

线上版本:

zookeeper: zookeeper-3.7.1

kakfa: kafka_ 2.12-3.0.0

2. Kafka安装

安装JDK1.84. 安装部署

说明:服务都已安装好,确认服务器自启动是否正常

2.1 zookeeper安装

1)下载相应版本,解压即可

mirrors.tuna.tsinghua.edu.cn/apache/zook…

2)配置

vi conf/zoo.cfg

参数说明:

tickTime=2000客户端与服务器或者服务器与服务器之间维持心跳时间

initLimit=10集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数

syncLimit=5集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数

dataDir存放myid信息跟一些版本,日志,跟服务器唯一的ID信息

dataLogDir日志存放路径,(需修改启动脚本)clientPort服务端口server.1集群信息

3)zookeeper启停

停止: ./bin/zkServer.sh stop

启动: ./bin/zkServer.sh start

2.2 kafka安装

1)下载相应版本,解压即可

kafka.apache.org/downloads

2)配置

vi config/server.properties

参数说明:

broker.id =0每一个broker在集群中的唯一表示,要求是正数

log.dirs=/data/kafka-logskafka数据的存放地址

port =9092broker server服务端口

message.max.bytes =6525000表示消息体的最大大小,单位是字节

num.network.threads =4broker处理消息的最大线程数,一般情况下数量为cpu核数

num.io.threads =8broker处理磁盘IO的线程数,数值为cpu核数2倍

background.threads =4一些后台任务处理的线程数,例如过期消息文件的删除等,一般情况下不需要去做修改

queued.max.requests =500等待IO线程处理的请求队列最大数,若是等待IO的请求超过这个数值,那么会停止接受外部消息,应该是一种自我保护机制host.namebroker的主机地址socket.send.buffer.bytes=100*1024socket的发送缓冲区,

socket的调优参数SO_SNDBUFF

socket.receive.buffer.bytes =100*1024socket的接受缓冲区,

socket的调优参数SO_RCVBUFF

socket.request.max.bytes =10010241024socket请求的最大数值,防止serverOOM,message.max.bytes必然要小于socket.request.max.bytes,会被topic创建时的指定参数覆盖delete.topic.enable=true是否彻底删除Topic5. 启停方法

3)kafka启停

停止: ../bin/kafka-server-stop.sh

启动: ./bin/kafka-server-start.sh -daemon config/server.properties6. 集群配置

3. Kafka集群配置

1)配置zookeeper集群(3台为例)

a)vi conf/zoo.cfg

添加集群机器信息

server.1=172.26.1.247:2181

server.2=172.26.1.247:2182

server.3=172.26.1.247:2183

b)每台机器上生成响应的id文件(不能重复)

server1上执行: echo "1" > /home/appadmin/kafka/data/myid

server2上执行: echo "2" > /home/appadmin/kafka/data/myid

server3上执行: echo "3" > /home/appadmin/kafka/data/myid

c)重启zookeeper服务

停止 ./bin/zkServer.sh stop

启动:./bin/zkServer.sh start

检查集群状态:./bin/zkServer.sh status 可以查看节点的模式,分为follower与leader

2)配置kafka集群

a)vi config/server.properties

添加zookeeper集群机器信息

zookeeper.connect=172.26.1.247:2181, 172.26.1.247:2182, 172.26.1.247:2183

zookeeper.connection.timeout.ms=400000

修改broker.id(每台机器的id不能重复)

broker.id=20

b)重启kafka服务

停止 bin/kafka-server-stop.sh

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

c)测试集群

消费者服务器查看到数据则集群配置完成

3)配置优化

num.io.threads=8 --broker io处理的线程数,这个数量一定要比log.dirs的目录数要大

The send buffer (SO_SNDBUF) used by the socket server

socket.send.buffer.bytes=1048576 --将发送的消息先放到缓冲区,当到达一定量的时候再一次性发出

The receive buffer (SO_RCVBUF) used by the socket server

socket.receive.buffer.bytes=1048576 --kafka接受消息的缓冲区,当接受的数量达到一定量的时候再写入磁盘

为了减少磁盘写入的次数,broker会将消息暂时buffer起来,当消息的个数(或尺寸)达到一定阀值时,再flush到磁盘,这样减少了磁盘IO调用的次数。

The maximum size of a request that the socket server will accept (protection against OOM)

socket.request.max.bytes=104857600 --像kafka发送或者请求消息的最大数,此设置不能超过java堆栈大小

4. Kafka常用命令

1)创建一个topic

sh kafka-topics.sh --create --topic tyjt-test1 --bootstrap-server 172.26.1.246:9092 --replication-factor 1 --partitions 1

2)查看topic

sh kafka-topics.sh --list --bootstrap-server 172.26.1.246:9092 --topic tyjt-test

3)查看topic

bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test

4)删除topic

sh kafka-topics.sh --delete --bootstrap-server 172.26.1.246:9092 --topic tyjt-test1

删除topic:慎用,只会删除zookeeper中的元数据,消息文件须手动删除

5)列出所有主题中的所有用户组

./kafka-consumer-groups.sh --bootstrap-server 172.26.1.246:9092 –list

要使用ConsumerOffsetChecker查看上一个示例中消费者组的偏移量

./kafka-consumer-groups.sh --bootstrap-server 172.26.1.246:9092 --describe --group lushijie3

6)修改partitions数量

kafka-topics.sh --bootstrap-server 172.26.1.246:9092 --topic tyjt-test --alter --partitions 4

7)模拟生产者

sh kafka-console-producer.sh --broker-list 172.26.1.246:9092 --topic tyjt-test

8)模拟消费者

sh kafka-console-consumer.sh --bootstrap-server 172.26.1.246:9092 --topic tyjt-test

可以看到当前的消费进度(CURRENT-OFFSET)、消息进度(LOG-END-OFFSET)、落后量(LAG):

./kafka-consumer-groups.sh --bootstrap-server 172.26.1.246:9092 --describe --group lushijie3