1、kafka的概述
2、kafka的特性
1、消息系统
2、跟踪网站活动
Kafka 的初始用例是将用户活动跟踪管道重建为一组实时发布-订阅源。这意味着网站动
(浏览网页、搜索或其他的用户操作)将被发布到中心 topic,其中每个活动类型有一个topic。这些订阅源提供一系列用例,包括实时处理、实时监视、对加载到 Hadoop 或线数据仓库系统的数据进行离线处理和报告等。每个用户浏览网页时都生成了许多活动息,因此活动跟踪的数据量通常非常大
3、运营指标
Kafka 也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告
4、日志聚合
许多人使用 Kafka 来替代日志聚合解决方案。日志聚合系统通常从服务器收集物理日志文件,并将其置于一个中心系统(可能是文件服务器或 HDFS)进行处理。Kafka 从些日志文件中提取信息,并将其抽象为一个更加清晰的消息流。这样可以实现更低的延迟处理且易于支持多个数据源及分布式数据的消耗。
5、采集日志
Event Sourcing 是一种应用程序设计风格,按时间来记录状态的更改。Kafka 可以存储非常多的日志数据,为基于 Event Sourcing 的应用程序提供强有力的支持
1、kafka核心组件概述
Kafka 是 LinkedIn 用于日志处理的分布式消息队列,同时支持离线和在线日志处理。
Kafka 对消息保存时根据 Topic 进行归类:
Kafka 的大致工作模式:
1、启动 ZooKeeper 的 server
2、启动 Kafka 的 server
3、Producer 生产数据,然后通过 ZooKeeper 找到 Broker,再将数据 push 到 Broker 保存
4、Consumer 通过 ZooKeeper 找到 Broker,然后再主动 pull 数据
3、Kafka 的核心概念详解
Producer : 生产 message 发送到 topic
Consumer : 订阅 topic 消费 message,consumer 作为一个线程来消费
Consumer Group:一个 Consumer Group 包含多个 consumer,这个是预先在配置文件中配置好的
Broker:Kafka 节点,一个 Kafka 节点就是一个 broker,多个 broker 可以组成一个 Kafka 集群。
Topic:一类消息,消息存放的目录即主题,例如 page view 日志、click 日志等都可以以 topic的形式存在,Kafka 集群能够同时负责多个 topic 的分发。
Partition:topic 物理上的分组,一个 topic 可以分为多个 partition,每个 partition 是个有序的队列
Segment:partition 物理上由多个 segment 组成,每个 Segment 存着 message 信息
4、kafka的真正用处
为流式处理应用平台提供数据流的聚合和分类支撑
聚合:所有的数据收集程序都可以把数据收集到kafka
分类:最终kafka所接收到的所有数据,都会按照topic进行分类存储。
特点:缓冲,数据持久保存
在消费的时候,可以进行限流
分区中的每一个记录都会分配一个id号来表示顺序,我们称之为offset(偏移量),offset用来唯一的标识分区中每一条记录。
1.创建topics
kafka-topics.sh \
--create \
--zookeeper qyl01:2181,qyl02:2181,qyl03:2181 \
--replication-factor 3 \
--partitions 10 \
--topic kafka_test
2、查看已经创建的所有的kafka topic
kafka-topics.sh \
--list \
--zookeeper qyl01:2181,qyl02:2181,qyl03:2181
3、查看指定的kafka topic的详细信息
kafka-topics.sh \
--zookeeper qyl01:2181,qyl02:2181,qyl03:2181 \
--describe \
--topic kafka_test
4、开启生产者模拟生产数据
kafka-console-producer.sh \
--broker-list qyl01:9092,qyl02:9092,qyl03:9092,qyl04:9092 \
--topic kafka_test
5、开启消费者模拟消费数据
kafka-console-consumer.sh \
--zookeeper qyl01:2181,qyl02:2181,qyl03:2181 \
--from-beginning \
--topic kafka_test
6、查看某个分区的偏移量的最大值和最小值
kafka-run-class.sh \
kafka.tools.GetOffsetShell \
--topic kafka_test \
--time -1 \
--broker-list qyl01:9092,qyl02:9092,qyl03:9092,qyl04:9092 \
--partitions 1
7、增加topic分区数
kafka-topics.sh \
--alter \
--zookeeper qyl01:2181,qyl02:2181,qyl03:2181 \
--topic kafka_test \
--partitions 20
8、删除topic
kafka-topics.sh \
--delete \
--zookeeper qyl01:2181,qyl02:2181,qyl03:2181 \
--topic kafka_test