文章目录

  • kafka的搭建
  • 搭建前说明
  • 搭建前准备
  • zookeeper的安装
  • zookeeper的测试
  • kafka的安装
  • 其他两台机器的安装
  • kafka的测试
  • 特别说明


kafka的搭建

搭建前说明

  • 这里就不说废话去具体介绍kafka是什么了,只要知道他是一个分布式的队列,作用是缓冲消息的就行了。
  • kafka的运行是基于zookeeper的,所以运行先要装一个zookeeper。
  • 版本说明:zookeeper-3.4.13、kafka_2.12-2.2.0
  • 说明:本文采用的是自己下载安装的方法进行搭建的。

搭建前准备

  • 需要安装jdk,版本最好在1.8及以上。
  • 三台机器,假如我这里准备的三台机器的hostname分别是0.0.0.198、0.0.0.206、0.0.0.209(0.0.0只是个说明,以大家实际的写法为主)
  • 此时/etc/hosts为
0.0.0.209 server01
0.0.0.198 server02
0.0.0.206 server03
  • ps:kafka的搭建其实不需要这些,只是集群的搭建,还是希望大家保持一致

zookeeper的安装

进入/opt目录,本文所有的包都安装在opt目录下

  • 下载zookeeper
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
  • 解压文件
tar -zxvf zookeeper-3.4.13.tar.gz
  • 进入zookeeper-3.4.13 里面的conf目录里面,创建zoo.cfg,在里面写
tickTime = 2000 
initLimit=10
syncLimit=5
dataDir = /opt/zookeeper/zkdata
dataLogDir=/opt/zookeeper/zkdatalog 
clientPort = 2181
server.1=0.0.0.209:2888:3888
server.2=0.0.0.198:2888:3888
server.3=0.0.0.206:2888:3888
  • 如上的配置文件所示,还需要创建两个目录,/opt/zookeeper/zkdata/opt/zookeeper/zkdatalog,这两个目录是用于存储管理的数据和日志的。
  • 进入/opt/zookeeper/zkdata目录,创建文件myid,每个myid里面写各自对应的节点id,即123

zookeeper的测试

做完了上述步骤,zookeeper就算是安装完成了。
下面就要对其进行一些测试,以保证安装的顺利进行。
进入zookeeper-3.4.13目录,运行命令bin/zkCli.sh -server 127.0.0.1:2181,查看返回

Connecting to localhost:2181
log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKeeper).
log4j:WARN Please initialize the log4j system properly.
Welcome to ZooKeeper!
JLine support is enabled
[zkshell: 0]

kafka的安装

在安装完zookeeper后,接下来就是安装kafka了。
这里有些话要说下,由于三台机器安装kafka的时候,配置信息会有所不同,所以下面讲的0.0.0.198上面的安装步骤,其他两台的具体步骤会在下面说明。

  • 下载
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.12-2.2.0.tgz
  • 解压,并进入kafka_2.12-2.2.0目录里面
  • 进入config目录里面,然后编辑server.properties,具体的修改如下(我把注释部分给去掉了,修改的时候要看仔细)。
broker.id=3
listeners=PLAINTEXT://:9092
port=9092
host.name=10.25.1.206

advertised.host.name=10.25.1.206
advertised.port=9092

num.network.threads=3
num.io.threads=8

socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600

log.dirs=/opt/kafka/kafkalogs/

num.partitions=3
num.recovery.threads.per.data.dir=1

offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1

log.retention.hours=168

message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880

log.segment.bytes=1073741824
log.retention.check.interval.ms=300000

zookeeper.connect=10.25.1.209:2181,10.25.1.198:2181,10.25.1.206:2181
zookeeper.connection.timeout.ms=6000

group.initial.rebalance.delay.ms=0
delete.topic.enable=true
  • 和之前的zookeeper一样,这里也配置了log.dirs,所以要创建目录/opt/kafka/kafkalogs/

其他两台机器的安装

其他两台的步骤基本和198的一致,区别在于以下几点

  • broker.id 不同,这个id对应的是zookeeper的myid的值
  • host.name 不同,要修改成各自机器对应的hostname

kafka的测试

当你完成上述步骤之后,就代表着你的zookeeper和kafka集群搭建完成了,下面就是进行一些测试,来看看kafka的安装是否顺利。

  • 启动kafka
bin/kafka-server-start.sh config/server.properties
  • 创建主题
    让我们创建一个名为“test”的主题,它只包含一个分区,只有一个副本
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

如果我们运行list topic命令,我们现在可以看到该主题:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092
test
  • 发送消息
    Kafka附带一个命令行客户端,它将从文件或标准输入中获取输入,并将其作为消息发送到Kafka集群,运行生产者,然后在控制台中键入一些消息以发送到服务器。
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
This is a message
This is another message
  • 消费消息
    Kafka还有一个命令行使用者,它会将消息转储到标准输出。
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
This is a message
This is another message
  • 以上,如果你能正确的消费到信息,那么,你的kafka就搭建成功了

特别说明

这里给大家分享一个经验,我之前就是因为不知道这个,花了很多很多的冤枉时间。
就是在你修改了kafka的配置文件,或者重启的时候,想要删除之前的topic历史数据,又或者其他的需要重启的信息的时候,这个时候有一个很关键的注意点:就是要删除kafka和zookeeper的历史数据,其中删除zookeeper/*里面的历史信息特别关键,不然到时候很容易出现producer上传信息,但是consumer却消费不到的情景!!!!