kafka搭建、开发、调优集锦

本文讲解如何下载,搭建zk和kafka集群。 本文会用三台机器,每一台机器上会启动zk和kafka,所以最终效果就是3台zk集群和3台kafka集群。
准备资源如下:

  • 三台centos机器(虚拟机)


下载kafka并解压安装包

找到你要下载的版本 apache kafka下载地址列表

wget  https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11-1.1.0.tgz
tar -zxvf kafka_2.11-1.1.0.tgz

搭建zk集群

不用单独下载zk安装包,直接使用kafka同包zk就好。

# 创建zk数据目录
 mkdir /opt/data/zkData
 # 创建 zk log目录
 mkdir /opt/log/zkLog

修改zk配置 vi config/zookeeper.properties

 # 修改zk配置
dataDir=/opt/data/zkData
dataLogDir=/opt/log/zkLog

maxClientCnxns=0
tickTime=2000
initLimit=10
syncLimit=5

server.1=192.168.0.154:2888:3888
server.2=192.168.0.155:2888:3888
server.3=192.168.0.156:2888:3888

按照上面server.1 server.2 server.3 的顺讯分别执行

# 192.168.0.154 执行 
echo 1 >  /opt/data/zkData/myid
# 192.168.0.155 执行 
echo 2 >  /opt/data/zkData/myid
# 192.168.0.156 执行 
echo 3 >  /opt/data/zkData/myid

启动zk

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

如何判断zk启动成功?

  1. jps 看是否有 QuorumPeerMain这个进程在
  2. 查看zk日志 tail -F logs/zookeeper.out
  3. 自己下载一个zk包,用zkCli 链接看看是否成功 bin/zkCli.sh -server 192.168.0.154:2181

启动kafka

创建数据目录

mkdir /opt/data/kafkaData

修改配置文件 vi config/server.properties

# 每台kafka节点的id要不能配置一个值
broker.id=0

# 根据自己IP配置, 这个一定要配置否则会出现不能远程访问的问题,只能在安装机器上访问自己
advertised.listeners=PLAINTEXT://192.168.0.154:9092
port=9092
num.network.threads=5 
queued.max.requests=500  
num.io.threads=8

#kafka官方写的buffer为 100KB的时候,吞吐量可以最大,所以这里就不改了
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400

# 根据自己项目配置最大消息大小,如果存放视频或者音频那么这个地方大一点
socket.request.max.bytes=104857600

log.dirs=/opt/data/kafkaData

zookeeper.connect=192.168.0.154:2181,192.168.0.156:2181,192.168.0.154:2181/kafka

num.partitions=10
default.replication.factor=2
min.insync.replicas=2  
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.cleanup.policy = delete
log.retention.hours=168
log.retention.bytes=901943132160
log.flush.interval.messages=10000
log.flush.interval.ms=1000 
log.segment.bytes=1073741824
log.roll.hours = 24*7
log.retention.check.interval.ms=300000
zookeeper.connection.timeout.ms=6000
auto.create.topics.enable=false
delete.topic.enable=true
group.initial.rebalance.delay.ms=5000  
group.max.session.timeout.ms=300000  
group.min.session.timeout.ms=6000
log.roll.hours = 24

修改 bin/kafka-server-start.sh


修改这里的 内存大小, 同时加上 JMX端口

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx4G -Xms4G"
    export JMX_PORT="10053"
fi

启动kafka

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

如何判断kafka运行成功?

  1. 看日志 tail -F logs/server.log
  2. jps 看有没有Kafka这个进程
  3. 运行命令看topic状态 bin/kafka-topics.sh --describe --zookeeper 192.168.0.154:2181/kafka

采坑指南

Expiring 1 record(s) for topic-1: 30036 ms has passed since batch creation plus linger time

解决方法: advertised.listeners=PLAINTEXT://:IP:9092 在kafka的配置server.properties中这台kafka服务器的ip

推荐文档

kafka server.properties的每个配置项含义

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
慷慨打赏