zk 搭建
zk 集群需要优先搭建起来,这里使用 Hadoop 2.8.5 完全分布式HA高可用安装(一)–环境准备中搭建的ZK集群。
kafka下载
到kafka官网 下载最新的kafka_2.12-2.2.0.tgz
这里我们部署3台kafka,部署在node1,node2,node3这三台机器上。
配置
将kafka_2.12-2.2.0.tgz
上传到node1的/data/program/
目录下,tar -xzvf kafka_2.12-2.2.0.tgz
解压。进入/data/program/kafka_2.12-2.2.0/config
,修改server.properties
。
由于我这里需要紧急配置使用kafka,这里只修改几个必要的选项。
broker.id 改为1。这个值是集群中唯一的一个整数,每台机器各不相同,这里node1设置为1, 其他机器后续再改。
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1
修改日志的路径。注意这里kafkaLogs需要手动创建!
log.dirs=/data/program/kafka_2.12-2.2.0/kafkaLogs
修改zk的配置
zookeeper.connect=node1:2181,node2:2181,node3:2181
其他的全部默认。
将node1的kafka_2.12-2.2.0传到node2和node3上,记得修改这两台机器server.properties
中broker.id的值,node2设置为2,node3设置为3.
scp -r kafka_2.12-2.2.0 node3:/data/program/
启动服务
在3台机器上执行
./kafka-server-start.sh ../config/server.properties &
或者
./kafka-server-start.sh -daemon ../config/server.properties
服务启动成功,jps可以看到Kafka服务。
测试
创建一个topic “my-test-topic”
[root@node1 bin]# ./kafka-topics.sh --create --zookeeper node1:2181 --replication-factor 2 --partitions 1 --topic my-test-topic
Created topic my-test-topic.
查看刚创建的topic
[root@node2 bin]# ./kafka-topics.sh --list --zookeeper node2:2181
my-test-topic
测试消息的发送与接收
node2和node3机器,执行./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-test-topic --from-beginning
命令,启动消费者。有消息收到时会输出消息。
node1上发送几条消息:
[root@node1 bin]# ./kafka-console-producer.sh --broker-list node1:9092 --topic my-test-topic
>hi
>lisi
>zhangsan
>
可以看到node2和node3上收到消息:
[root@node3 bin]# ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-test-topic --from-beginning
hi
lisi
zhangsan