Kafka系统学习(未完待续。。。)

1. 概念

1. Kafka是一个分布式的基于发布/订阅的消息队列,应用于大数据实时处理。
	1.1 消息队列就是为了让消费者跟生产者解耦,实现高效,但是安全性肯定降低,需要额外处理。
	1.2 大数据一般处理流程:日志收集者(flume) ---> Kafka ---> 消息消费者(spark、flink)。
	1.3 消息队列分两种:
		1.3.1 点对点(一对一)
		1.3.2 发布/订阅(一对多)

2. 架构

发布1
订阅1
发布2
订阅2
发布3
订阅3
Producer
TopicA-Partiyion0
group0
Consumer0
TopicA-Partiyion1
Consumer1
TopicA-Partiyion2
Consumer2
1. 每一个Topic分为多个partition
2. 每一个partition都有多个副本在不同机器
3. 消费者组内两个消费者只能消费同一个topic的不同partition分区的消息,组内消费者形成一个订阅者

3. 安装部署

1. 依赖于zookeeper,首先安装zookeeper
2. 解压Kafka安装包
3. 配置环境变量
4. 配置Kafka属性
	4.1 server.property文件
	// kafka只有几台并行的机器没有主从结构:必须配置broker ID,集群时,分发后修改其他机器此值
	broker.id=0
	// kafka数据存储的目录
	log.dirs=/kafka/logs
	// 分区数
	num.partitions=1
	// 数据存储时间:一周以内数据不删除
	log.retention.hours=168
	// 消息的每个segment的大小
	log.retention.bytes=1073741824
	// log被删除的的情况检查时间 默认为5分钟
	log.retention.check.interval.ms=300000
	// 配置依赖的zookeeper
	zookeeper.connect=master:2181,slave1:2181,slave2:2181
5. 启动Kafka(预先启动zookeeper)
	kafka-sever-start.sh config/server.property &

4. 命令行操作

1. 查看所有topic
	kafka-topics.sh --list --zookeeper master:2181,slave1:2181
2. 新建topic 指定topic名 指定副本数 指定分区数
	kafka-topics.sh --create --zookeeper master:2181,slave1:2181  --topic first --replication-factor 2 --partitions 2
2.*** 修改分区数23
	kafka-topics.sh --alter --zookeeper master:2181,slave1:2181  --topic first --partitions 3
3. 查看/删除指定topic详细
	kafka-topics.sh --describe/delete --zookeeper master:2181,slave1:2181  --topic first
4. 控制台开启一个生产者
	kafka-console-producer.sh --broker-list master:9092,slave1:9092 --topic first
5. 控制台开启一个消费者  --from-beginning 从头开始消费
	kafka-console-consumer.sh --bootstrap-server master:9092,slave1:9092 --topic first

5.

你可能感兴趣的:(大数据组件学习,kafka)