IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Kafka工作流程和文件储存 -> 正文阅读

[大数据]Kafka工作流程和文件储存

工作流程

常用命令:先启动zookeeper和kfka

# 创建topic
[atguigu@hadoop112 kafka_2.11-0.11.0.0]$ bin/kafka-topics.sh --create --zookeeper hadoop112:2181 --replication-factor 3 --partitions 2 --topic first


# 开启生产者
[atguigu@hadoop112 kafka_2.11-0.11.0.0]$ bin/kafka-console-producer.sh --broker-list hadoop112:9092 --topic first


# 开启消费者
[atguigu@hadoop112 kafka_2.11-0.11.0.0]$ bin/kafka-console-consumer.sh --zookeeper hadoop112:2181 --topic first


# 删除topic,需要在server.properties里面配置delete.topic.enable=true
[atguigu@hadoop112 kafka]$ bin/kafka-topics.sh --zookeeper hadoop112:2181 --delete --topic first

?

?

????????Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic ?
的。
????????分区命名规则为:topic 名称+分区序号。例如,first 这个 topic 有三个分区,则其对应的文件夹为 first-0,first-1,first-2
????????topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log
件,该 log 文件中存储的就是 producer 生产的数据。 Producer 生产的数据会被不断追加到该
log 文件末端,且每条数据都有自己的 offset 。消费者组中的每个消费者,都会实时记录自己
消费到了哪个 offset ,以便出错恢复时,从上次的位置继续消费
理解 :1:kafka按照topic进行分类,每个类别又进行了分区partition ,在实际存储中,以分区进行存储。每个分区又会有副本机制,即相同的分区,kafka可能会存储多分且分布在不同机器上面,防止某一个机器坏掉,数据丢失了。例如:我们将收藏和点赞分别放在topic1和topic2,然后今天的topic1作为一个分区,明天的topic1又作为一个分区,topic2同理,这样每个topic都有两个分区,然后但是我们数据只有一份。为了防止某台服务器突然坏了,里面数据都丢失了,我们就把这些分区数据备份一个,把备份的和原本的相同数据分开存在不同服务器,这就是副本了。
? ? ? ? ????2:kafka每个分区都会记录该分区的偏移量了,相同分区偏移量一样,这样我们就知到这个分区那些数据是被读取过的,下次会从这个地方接着读取。同一个组的消费者,例如张三上次从topic1的一个分区读取了10条数据,那么下次同一个消费组的李四,第一次读取topic1的这个分区
也会接着从第11条数据开始读取
? ? ? ? ? ? 3:kafka只能保证分区内有序,并不能保证全局有序,即topic1有三个分区,生产者按顺序依次向topic1发送,123456789三个数据,其中分区1存储了135,分区2存储了28,分区三存储了467(这里为随机存储,可以设定分区规则),这里每个分区内先存储的数据在前面有序,读取数据时,只能保证每个分区内的数据按顺序取出,从哪个分区开始读不确定,即读取顺序并不一定为123456789,可能先读完分区1,然后读取分区3,最后分区2,综述, 生产顺序和消费顺序并保证一致

文件储存

?命名:当前偏移量+1

? ? ? ? ? ? ?1:由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了分片和索引机制(分片:当log文件超过设定存储量时会产生新的log和index文件),将每个 partition 分为多个 segment。每个 segment对应两个文件——“.index”文件和“.log”文件,“.index”文件存储大量的索引信息,“.log”文件存储大量的数据,索引文件中的元数据指向对应数据文件中 message 的物理偏移地址。

??????? 下图为 index 文件和 log 文件的结构示意图。

? ? ? ? ?消费说明:当该分区有多个index文件时,比较index名字大小(二分查找法),定位index索引文件,index里面索引数据大小一样3为索引,756为偏移量大小,index还能记录该条消息大小,例如,message3大小为1000,那么会快速读取756——1756的数据,即message3

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:34:35  更:2021-10-23 12:34:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:59:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码