分布式消息队列Kafka简介及环境安装部署

最近在做一个基于Spark Streaming的实时流处理项目,之间用到了Kafka来作为消息队列,所以在这里总结一下Kafka的用法及原理.
Kafka是由Apache软件基金会开发的一个分布式开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值。
Kafka是消息中间件的一种,可以称为一个消息系统.
Kafka的特性:
高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒
可扩展性:kafka集群支持热扩展
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
高并发:支持数千个客户端同时读写
联系官网学习,http://kafka.apache.org/
Kafka架构和核心概念:
Kafka中发布订阅的对象是topic。我们可以为每类数据创建一个topic,把向topic发布消息的客户端称作producer,从topic订阅消息的客户端称作consumer。Producers和consumers可以同时从多个topic读写数据。一个kafka集群由一个或多个broker服务器组成,它负责持久化和备份具体的kafka消息。
producer:生产者,生产消息到topic的一方
consumer:消费者,订阅topic消费消息的一方
broker:Kafka的服务实例就是一个broker
topic:消息存放的目录即主题
在这里插入图片描述
单节点单block安装和部署:
可参考官网快速启动 http://kafka.apache.org/quickstart
首先安装zookeeper http://archive.cloudera.com/cdh5/cdh/5/
选择版本zookeeper-3.4.5-cdh5.7.0
并配置到环境变量中去
vi /etc/profile
加入zookeeper路径

export ZK_HOME=/home/zq/zookeeper-3.4.5-cdh5.7.0
export PATH=$ZK_HOME/bin:$PATH

source /etc/profile
依次执行以下命令:

cd conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

在这里插入图片描述
修改数据存储目录,如上图所示
启动zookeeper:
在这里插入图片描述

下载kafka:
https://www-eu.apache.org/dist/kafka/2.0.0/kafka_2.12-2.0.0.tgz
解压缩以后将路径配置到环境变量中

export KAFKA_HOME=/home/zq/kafka_2.12-2.0.0
export PATH=$KAFKA_HOME/bin:$PATH

修改配置文件server.properties

host.name=zq
log.dirs=/home/zq/data1/kafka_logs
zookeeper.connect=zq:2181

启动kafka:
cd config
kafka-server-start.sh $KAFKA_HOME/config/server.properties
或者
cd bin
kafka-server-start.sh config/server.properties

jps显示有kafka这个进程,代表开启kafka成功
在这里插入图片描述

创建topic
kafka-topics.sh --create --zookeeper zq:2181 --replication-factor 1 --partitions 1 --topic topic_test
查看所有topic
kafka-topics.sh --list --zookeeper zq:2181
在这里插入图片描述
发送(产生)消息:
kafka-console-producer.sh --broker-list zq:9092 --topic topic_test
消费消息:
kafka-console-consumer.sh --bootstrap-server zq:9092 --topic topic_test --from-beginning
或者
kafka-console-consumer.sh --zookeeper zq:2181 --topic topic_test --from-beginning
在这里插入图片描述
可见生产者和消费者通信成功
–from-beginning这个参数代表消费者从头开始消费,意思是保留了消息记录,下次通信时依然可以看到之前的信息
在这里插入图片描述
查看所有topic的详细信息
kafka-topics.sh --describe --zookeeper zq:2181
查看指定topic的详细信息
kafka-topics.sh --describe --zookeeper zq:2181 --topic topic_test
在这里插入图片描述

单节点多block安装和部署:
在这里插入图片描述
以后台方式启动:

kafka-server-start.sh -daemon $KAFKA_HOME/config/server-1.properties &
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-2.properties &
kafka-server-start.sh -daemon $KAFKA_HOME/config/server-3.properties &

在这里插入图片描述
在这里插入图片描述

创建多副本主题
ReplicationFactor副本系数为3

kafka-topics.sh --create --zookeeper zq:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic

再多开四个终端如下:
启动生产者
kafka-console-producer.sh --broker-list zq:9093,zq:9094,zq:9095 --topic my-replicated-topic
启动消费者
kafka-console-consumer.sh --bootstrap-server zq:9093 --topic my-replicated-topic
kafka-console-consumer.sh --bootstrap-server zq:9094 --topic my-replicated-topic
kafka-console-consumer.sh --bootstrap-server zq:9095 --topic my-replicated-topic
或者
kafka-console-consumer.sh --zookeeper zq:2181 --topic my-replicated-topic
在这里插入图片描述
如图,单节点多block版安装和部署到这里就成功了
多节点多block安装和部署:
虚拟机或者远程云主机搭建测试,步骤都是差不多的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值