Kafka分布式集群部署

1:概念和特点

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

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

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

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

如下图所示

 

Kafka分布式集群部署_第1张图片

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

Kafka分布式集群部署_第2张图片

2:下载kafka,http://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:
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
	

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

你可能感兴趣的:(kafka)