Kafka分布式集群部署
1:概念和特点
>>是一个消息队列,符合先进先出的原则,它是一个处理流数据的消息系统
>>实时高效的流处理,也就要求支持高吞吐量,需要支持多并发的消费者消费
>>分布式集群,存储在kafka上的数据,和HDFS一样,有副本机制。
>>依赖分布式协调服务zookeeper,包括hadoop生态圈中的HDFS,yarn,Hbase都要依赖zookeeper比如Hbase中master的选举,就是依赖于zookeeper的。Kafka也是通过zookeeper服务实现分布式协调当生产者和kafka集成的过程中,需要先把一些内容(topic的相关信息)写入到zookeeper中,消费者向Kafka消费一个内容也需要先向zookeeper读取内容。
如下图所示
对于kafka和zookeeper,类似于HDFS中,datanode对于namenode,kafka的topic一些信息会存放到zookeeper上,用来索引topic对于toipic的内容,可以放到不同的partition上,并且存储在partition上的数据是有副本备份的。发送的消息,是基于内存,内存满了再放到本节点的磁盘上。
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:<!!!----是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
从生产端发送数据,可以看到消费端是否能接收到
推荐阅读
-
关于hadoop完全分布式集群搭建 博客分类: hadoop hadoop完全分布式
-
关于hadoop完全分布式集群搭建 博客分类: hadoop hadoop完全分布式
-
分布式与集群解决方法
-
Java高级架构之FastDFS分布式文件集群详解
-
Redis集群部署及常用的操作命令
-
redis集群部署方式(redis集群三主三从原理)
-
Elasticsearch与MongoDB 数据同步及分布式集群搭建 (二)
-
Kubernetes初探[1]:部署你的第一个ASP.NET Core应用到k8s集群
-
redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题
-
使用mysql-mmm实现mysql集群部署_MySQL