kafka学习笔记

kafka安装

环境要求:需要安装zookeeper、java1.7以上。

下载kafka

注意:到Kafka官网下载安装文件时,一定要选择和自己电脑上已经安装的scala版本号一致才可以。本电脑安装的scala版本号是2.11.16,所以,一定要选择Kafka版本号是2.11开头的。比如,到Kafka官网中,可以下载安装文件kafka_2.11-0.10.1.0,前面的2.11就是支持的scala版本号,后面的0.10.1.0是Kafka自身的版本号。

解压安装包

sudo tar -zxvf kafka_2.11-0.10.1.0.tgz -C /usr/local/
cd /usr/local
sudo mv kafka_2.11-0.10.1.0/ kafka/

配置kafka配置文件

cd /usr/local/kafka/config/
sudo vi server.properties
port=9092
log.dirs=/usr/local/kafka/logs
zookeeper.connect=Master:2181,Slave1:2181

远程复制到其他节点

把配置好后的kafka目录远程复制到其他节点

sudo scp -r /usr/local/kafka Slave1:/usr/local/

在其他节点上修改borker id,默认为0,可修改为其他整数,borker id需要全局唯一,各个节点上不重复。
在这里插入图片描述
在各节点上赋予hadoop用户操作kafka目录的权限

cd /usr/local
sudo chown -R hadoop kafka/

启动kafka

在启动kafka之前,需要先启动zookeeper

再到每个节点上启动kafka服务

cd /usr/local/kafka
bin/kafka-server-start.sh config/server.properties &

在这里插入图片描述

kafka的相关概念

Topic

Kafka将消息分门别类,每一类的消息称之为一个主题(Topic)。对于每个topic,Kafka集群都会维护多个分区(为了使主题的消息无大小的限制和提高并发度),就像下图中所示

screenshot

partition是一个有序的message序列,这些message按顺序添加到一个叫做commit log的文件中。partition中的消息都被分了一个序列号,称之为偏移量(offset),在每个partition中此偏移量都是唯一的。

Producer

发布消息的对象称之为主题生产者(Kafka topic producer)。

Consumer

订阅消息并处理发布的消息的对象称之为主题消费者(consumer),但在kafka中,真正意义上的消费者是consumer-group,consumer在consumer-group里面的作用是分摊消费。

Broker

已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个 服务器都是一个Broker。 消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。

消息传递模式

传统的消息传递模式有两种,一种是队列模式,一种是发布—订阅模式。

在队列模式中,多个consumer从服务器中读取数据,每条消息只会到达一个consumer。

在这里插入图片描述

在发布—订阅模型中,消息会被广播给所有的consumer。

在这里插入图片描述

kafka为了结合这两种消息传递模式,提供了一种关于consumer的抽象概念:consumer group。在kafka中,真正的消费者是consumer group,consumer group里面的consumer起到了分摊消费的作用,从而使consumer group在消费消息方面实现可扩展和容灾。这并没有什么特殊的地方,仅仅是将发布—订阅模型中的运行在单个进程上的consumer替换成一个consumer group。

一个consumer group在消费时,一个partition只会分给consumer group的一个consumer消费,所以需要注意的是,一个consumer group中的consumer的数量不能比一个Topic中的partition的数量多。

Distribution(分布式)

partitions分布在kafka集群中不同的broker上,每个broker可以请求备份其他broker上partition上的数据。kafka集群支持配置partition备份的数量。针对每个partition,都有一个broker起到“leader”的作用,0个多个其他的broker作为“follwers”的作用。leader处理所有的针对这个partition的读写请求,而followers被动复制leader的结果。如果这个leader失效了,其中的一个follower将会自动的变成新的leader。

每个broker都是自己所管理的partition的leader,同时又是其他broker所管理partitions的followers,kafka通过这种方式来达到负载均衡。

总结

把上面谈到的kafka相关概念相结合,可得Topic、Producer、Consumer、Broker、消息传递模式之间的关系如图所示

在这里插入图片描述

kafka使用

开启kafka之后,创建一个主题(这个主题在Master和Slave1上均可以看到)

cd /usr/local/kafka
bin/kafka-topics.sh --create --zookeeper Master:2181 --replication-factor 1 --partitions 1 --topic testTopic
bin/kafka-topics.sh --list --zookeeper Master:2181  

在这里插入图片描述

主题已创建,接下里用producer生产点数据(Master生产)

bin/kafka-console-producer.sh --broker-list Master:9092 --topic testTopic

然后再次开启新的终端或者直接按CTRL+C退出。然后使用consumer来接收数据(或者在Slave1上也可以接收)

./kafka-console-consumer.sh --bootstrap-server Master:9092 --topic testTopic --from-beginning

在这里插入图片描述
彻底删除topic:

1、删除kafka存储目录(server.properties文件log.dirs配置)相关topic目录

2、如果server.properties文件里配置了delete.topic.enable=true可以直接通过命令删除,否则通过命令删除只是把topic上标记为删除

3、zookeeper-client 删除掉broker下的topics里相应的topic即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值