大数据组件_Kafka学习

Kafka学习

基本概念

1. Broker: 每一台kafka机器节点就是一个broker
2. Producer: 消息生产者 往kafka的topic写数据
3. Consumer: 消息消费者 从kafka的topic读取数据
4. Topic: 主题-虚拟概念 针对操作而言 
		consumer需要指定topic读取相应数据 producer需要指定topic写数据
5. Partition: 分片-物理概念 
	5.1 每一个topic内的数据会被分布在不同机器的多个partition(保证每台机器的负载均衡)
	5.2 多个partition内部保证有序消费,但是多个partition之间不能保证有序消费
	5.3 Partition的组成:
		5.31 index.log: 存储索引(二分法) 快速定位 segment文件
		5.32 message.log: 存储真实数据
	5.4 例子:kafka分配复制partition
		某个topic 5个Partition 3个relication
		分配策略:将第i个partition分配到(i/N)个broker
			将第i个partition的第j个replication分配到(i+j)/N个broker
6. Offset: 偏移量 用于定位数据读取的位置
7. Message: 消费数据的单位 message的size最大1M
8. consumer group: 
9. Zero Copy: 零拷贝 传输快
10. 无状态机制: kafka自身的消息不维护消费状态 需要消费者自己维护消费状态
11. SLA: 消息保留策略 7天自动删除
12. 交付保证机制:(3种)
 	12.1. at least once: 至少一次(会有重复消息,但是不丢失  消费者可以判断重复) 
 	12.2 at most once: 最多一次(不会重复发送消息 但可能会不发送)
 	12.3 exactly once: 只有一次 目前不支持

控制台操作Kafka实战

1. 创建topic主题
---- ./bin/kafka-topics.sh --create --zookeeper cdh-master:2181 --replication-factor 1 --partitions 1 --topic user

2. 查看topic列表
---- ./bin/kafka-topics.sh --list --zookeeper cdh-master:2181

3. 用Kafka的console-producer在topic user生产消息
---- ./bin/kafka-console-producer.sh --broker-list cdh-master:9092 --topic user

4. 用Kafka的console-consumer 消费topic user的消息
---- ./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic user --from-beginning

注:彻底删除topic

彻底删除Kafka中的topic

1、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录

2、Kafka 删除topic的命令是:

 ./bin/kafka-topics  --delete --zookeeper 【zookeeper server】  --topic 【topic name】

 如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion

 你可以通过命令:./bin/kafka-topics --zookeeper 【zookeeper server】 --list 来查看所有topic



 此时你若想真正删除它,可以如下操作:

 (1)登录zookeeper客户端:命令:./bin/zookeeper-client

 (2)找到topic所在的目录:ls /brokers/topics

 (3)找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。



另外被标记为marked for deletion的topic你可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/【topic name】,

如果你删除了此处的topic,那么marked for deletion 标记消失

zookeeper 的config中也有有关topic的信息: ls /config/topics/【topic name】暂时不知道有什么用

总结:

彻底删除topic:

1、删除kafka存储目录(server.properties文件log.dirs配置,默认为"/tmp/kafka-logs")相关topic目录

2、如果配置了delete.topic.enable=true直接通过命令删除,如果命令删除不掉,直接通过zookeeper-client 删除掉broker下的topic即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值