5.6.1.1-Kafka-安装

优质
小牛编辑
128浏览
2023-12-01

以一个三台机器(storm01:192.168.3.250,storm02:192.168.3.251,storm03:192.168.3.252)的kafka集群部署为例。 详细步骤: kafka集群依赖Zookeeper集群,首先要保证Zookeeper集群正常运行。

1. 解压

tar zxvf kafka_2.9.2-0.8.1.1.tgz;
mv kafka_2.9.2-0.8.1.1 kafka

2. 修改 server.properties 配置文件

broker.id=0
zookeeper.connect=storm01:2181,storm02:2181,storm03:2181/kafka

3. 同步配置文件

scp -r /opt/kafka/ storm02:/opt/
scp -r /opt/kafka/ storm03:/opt/

4. 修改配置文件 server.propertiesbroker.id 属性

broker.id=1         # 在storm02修改
broker.id=2         # 在storm03修改

注:因为Kafka集群需要保证各个Broker的id在整个集群中必须唯一,需要调整这个配置项的值(如果在单机上,可以通过建立多个Broker进程来模拟分布式的Kafka集群,也需要Broker的id唯一,还需要修改一些配置目录的信息)

5. 启动Kafka

nohup kafka-server-start.sh /opt/kafka/config/server.properties &
jps

6. 创建并查看 Topic

bin/kafka-topics.sh --create --zookeeper storm01:2181,storm02:2181,storm03:2181/kafka --replication-factor 3 --partitions 5 --topic my-replicated-topic5
bin/kafka-topics.sh --describe --zookeeper storm01:2181,storm02:2181,storm03:2181/kafka --topic my-replicated-topic5
Topic:my-replicated-topic5    PartitionCount:5    ReplicationFactor:3    Configs:
Topic: my-replicated-topic5    Partition: 0    Leader: 0    Replicas: 0,2,1    Isr: 0,2,1
Topic: my-replicated-topic5    Partition: 1    Leader: 0    Replicas: 1,0,2    Isr: 0,2,1
Topic: my-replicated-topic5    Partition: 2    Leader: 2    Replicas: 2,1,0    Isr: 2,0,1
Topic: my-replicated-topic5    Partition: 3    Leader: 0    Replicas: 0,1,2    Isr: 0,2,1
Topic: my-replicated-topic5    Partition: 4    Leader: 2    Replicas: 1,2,0    Isr: 2,0,1

上面Leader、Replicas、Isr的含义如下:

术语解释
Partition分区
Leader负责读写指定分区的节点
Replicas复制该分区log的节点列表
Isr"in-sync" replicas,当前活跃的副本列表(是一个子集),并且可能成为Leader

6. 测试发布消息、消费消息。

在一个终端,启动Producer,并向我们上面创建的名称为my-replicated-topic5的Topic中生产消息,执行如下脚本:

kafka-console-producer.sh --broker-list storm01:9092,storm02:9092,storm03:9092 --topic my-replicated-topic5

在另一个终端,启动Consumer,并订阅我们上面创建的名称为my-replicated-topic5的Topic中生产的消息,执行如下脚本:

bin/kafka-console-consumer.sh --zookeeper storm01:2181,storm02:2181,storm03:2181 --from-beginning --topic my-replicated-topic5

可以在Producer终端上输入字符串消息行,然后回车,就可以在Consumer终端上看到消费者消费的消息内容。也可以参考Kafka的Producer和Consumer的Java API,通过API编码的方式来实现消息生产和消费的处理逻辑。 ```

参考资料