文章目录
- 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,即1
,2
,3
。
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的一致,区别在于以下几点
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却消费不到的情景!!!!