1.Zookeeper安装

1.1上传解压

上传zookeeper安装包到服务器并解压,(同推荐使用软连接方式访问Zookeeper)

[xyes@kafka-2 bigdata]$ ln -s zookeeper-3.4.12/ zookeeper

1.2修改配置

# The number of milliseconds of each tick
tickTime=2000  #心跳周期(保持默认)
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10   #(保持默认)
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5    #(保持默认)
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/opt/bigdata/data/zookeeper  #持久化数据保存地址
dataLogDir=/opt/bigdata/logs/zookeeper #日志保存地址
# the port at which the clients will connect
clientPort=2181      #客户端端口(保持默认)
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
#以下是各个节点的配置 server.id=主机名:端口:端口,需要和下面配置的myid一致
server.1=kafka-1:2888:3888  
server.2=kafka-2:2888:3888
server.3=kafka-3:2888:3888

最后将配置文件名改为zoo.cfg

1.3下发文件到各节点

scp -r zookeeper-3.4.12/ kafka-2:/opt/bigdata/

1.4配置各节点的myid

在前面配置的dataDir目录里创建myid文件并写入id值,我配置了3个节点,id分别为1,2,3,所以要在第一台机器里执行

[xyes@kafka-1 bigdata]$ cd data/zookeeper/
[xyes@kafka-1 zookeeper]$ echo 1 >myid

第二台

[xyes@kafka-2 bigdata]$ cd data/zookeeper/
[xyes@kafka-2 zookeeper]$ echo 2 >myid

第三台

[xyes@kafka-3 bigdata]$ cd data/zookeeper/
[xyes@kafka-3 zookeeper]$ echo 3 >myid

1.5启动zookeeper

需要分别启动每台机器的zookeeper,当然也可以写借本实现或者zookeeper自己启动

bin/zkServer.sh start

1.6验证是否启动成功

[xyes@kafka-2 zookeeper]$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/bigdata/zookeeper/bin/../conf/zoo.cfg
Mode: follower
或者
[xyes@kafka-3 zookeeper]$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/bigdata/zookeeper/bin/../conf/zoo.cfg
Mode: leader

2.Kafka 安装

2.1上传解压+软连接,不再赘述

2.2 修改配置文件

[xyes@kafka-3 config]$ ll
总用量 68
drwxrwxr-x. 2 xyes xyes 4096 5月   1 21:47 backup
-rw-r--r--. 1 xyes xyes  906 5月   1 21:47 connect-console-sink.properties
-rw-r--r--. 1 xyes xyes  909 5月   1 21:47 connect-console-source.properties
-rw-r--r--. 1 xyes xyes 5807 5月   1 21:47 connect-distributed.properties
-rw-r--r--. 1 xyes xyes  883 5月   1 21:47 connect-file-sink.properties
-rw-r--r--. 1 xyes xyes  881 5月   1 21:47 connect-file-source.properties
-rw-r--r--. 1 xyes xyes 1111 5月   1 21:47 connect-log4j.properties
-rw-r--r--. 1 xyes xyes 2730 5月   1 21:47 connect-standalone.properties
-rw-r--r--. 1 xyes xyes 1221 5月   1 21:47 consumer.properties
-rw-r--r--. 1 xyes xyes 4727 5月   1 21:47 log4j.properties
-rw-r--r--. 1 xyes xyes 1919 5月   1 21:47 producer.properties
-rw-r--r--. 1 xyes xyes 6911 5月   1 21:58 server.properties
-rw-r--r--. 1 xyes xyes 1032 5月   1 21:47 tools-log4j.properties
-rw-r--r--. 1 xyes xyes 1023 5月   1 21:47 zookeeper.properties

这里我们修改server.properties文件
由于配置较多,下面仅列出要修改的属性

broker.id=1 #每个节点都有属于自己的broker.id,需要下发完成之后再修改
port=9092   #绑定端口
host.name=kafka-3 #绑定主机 (每个节点单独配置)
log.dirs=/opt/bigdata/logs/kafka #日志保存地址(可选)
zookeeper.connect=kafka-1:2181,kafka-2:2181,kafka-3:2181  #zookeeper地址,逗号分割

2.3 下发文件到各节点

注意scp完成之后还应该单独修改各节点的broker.id和host.name属性

2.4逐一启动各节点的kafka服务

[xyes@kafka-3 kafka]$ bin/kafka-server-start.sh -daemon config/server.properties

也可以不选择-deamon从而前台启动,
注意,-daemon 选项一定要站在指点配置文件之前,否则会报错

2.5测试

2.5.1创建topic

/kafka-topics.sh --create --topic helloword --partitions 3 --replication-factor 1 --zookeeper kafka-1:2181,kafka-2:2181,kafka-3:2181

–partitions和 –replication-factor可选

2.5.2启动kafka-console-consumer.sh

/kafka-console-consumer.sh --zookeeper kafka-1:2181,kafka-2:2181,kafka-3:2181 --from-beginning --topic helloword

–from-beginning 可选

2.5.3启动kafka-console-producer.sh生产数据

./kafka-console-producer.sh --broker-list kafka-1:9092,kafka-2:9092,kafka-3:9092 --topic helloword

发现再producer端输入数据consumer端可以接收到数据,到此Kafka基本环境配置完成
另外使用下面命令可以查看已创建的topic详情

[xyes@kafka-2 bin]$ ./kafka-topics.sh --zookeeper kafka-1:2181,kafka-2:2181,kafka-3:2181 --describe --topic helloword
Topic:helloword PartitionCount:3        ReplicationFactor:1     Configs:
        Topic: helloword        Partition: 0    Leader: 1       Replicas: 1     Isr: 1
        Topic: helloword        Partition: 1    Leader: 2       Replicas: 2     Isr: 2
        Topic: helloword        Partition: 2    Leader: 0       Replicas: 0     Isr: 0