欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kafka分布式集群部署

程序员文章站 2022-05-07 18:57:03
...

1:概念和特点

>>是一个消息队列,符合先进先出的原则,它是一个处理流数据的消息系统

>>实时高效的流处理,也就要求支持高吞吐量,需要支持多并发的消费者消费

>>分布式集群,存储在kafka上的数据,和HDFS一样,有副本机制。

>>依赖分布式协调服务zookeeper,包括hadoop生态圈中的HDFS,yarn,Hbase都要依赖zookeeper比如Hbase中master的选举,就是依赖于zookeeper的。Kafka也是通过zookeeper服务实现分布式协调当生产者和kafka集成的过程中,需要先把一些内容(topic的相关信息)写入到zookeeper中,消费者向Kafka消费一个内容也需要先向zookeeper读取内容。

如下图所示

 

Kafka分布式集群部署

对于kafka和zookeeper,类似于HDFS中,datanode对于namenode,kafka的topic一些信息会存放到zookeeper上,用来索引topic对于toipic的内容,可以放到不同的partition上,并且存储在partition上的数据是有副本备份的。发送的消息,是基于内存,内存满了再放到本节点的磁盘上。

Kafka分布式集群部署

2:下载kafkahttp://archive.apache.org/dist/kafka/0.8.2.1/,因为0.8.2.1是企业生产中用得最多最稳定的版本

3:配置Kafka

server.properties中需要修改的地方

server.properties
#每个机器的唯一表示,这个作用类似于zookeeper中的myid文件和HDFS中的slaves文件
broker.id=0
#kafka服务监听的端口号
port=9092
#当前机器主机名
host.name=bigdata-pro01.rachel.com
# 存储日志的目录位置,需要写全路径
log.dirs=/opt/modules/kafka_2.11-0.8.2.1/kafka-logs
num.partitions=1(可以指定多个)
#配置kafka和zookeeper之间的连接端口和列表,因为kafka是依赖于zookeeper的
zookeeper.connect=bigdata-pro01.rachel.com:2181,bigdata-senior01.rachel.com:2181,bigdata-senior02.rachel.com:2181

producer.properties中需要修改的地方:

#生产端需要对Kafka写数据的时候,所对应的主机列表,以,号隔开
metadata.broker.list=bigdata-pro01.rachel.com:9092

4:将kafka分发给各个服务器,需要改各个机器上对应的server.properties文件中的broker.id,和hostname

5:启动服务

开启zookeeper启动
bin/kafka-server-start.sh config/server.properties

创建topic
bin/kafka-topics.sh --create --zookeeper bigdata-pro01.rachel.com:2181,bigdata-senior01.rachel.com:2181,bigdata-senior02.rachel.com:2181 --replication-factor 1 --partitions 1 --topic test

查看创建的topic
[zk: localhost:2181(CONNECTED) 6] ls /brokers/topics
[test]

6:测试

在任意一台机器上

启动生产端
bin/kafka-console-producer.sh --broker-list bigdata-pro01.rachel.com:9092,bigdata-senior01.rachel.com:9092,bigdata-senior02.rachel.com:9092 --topic protest

启动消费端口
Tips:<!!!----是2181端口不是9092端口----!!!>
bin/kafka-console-consumer.sh  --zookeeper bigdata-pro01.rachel.com:2181,bigdata-senior01.rachel.com:2181,bigdata-senior02.rachel.com:2181 --topic protest --from-beginning

《在老版本中不要bootstrap-server 一下是新版本的命令,不适用与当前版本,会报错》
bin/kafka-console-consumer.sh --bootstrap-server bigdata-pro01.rachel.com:9092,bigdata-senior01.rachel.com:9092,bigdata-senior02.rachel.com:9092 --topic protest --from-beginning
	

从生产端发送数据,可以看到消费端是否能接收到