5.6.1.1-Kafka-安装
优质
小牛编辑
143浏览
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.properties
的 broker.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编码的方式来实现消息生产和消费的处理逻辑。 ```