首页 > 其他分享 >大数据学习之kafka

大数据学习之kafka

时间:2022-11-29 21:45:06浏览次数:36  
标签:topic -- partition broker kafka 学习 2181 数据

kafka是一个分布式的基于发布/订阅模式的消息队列,只要应用于大数据实时处理领域

消息队列的两种模式:

  点对点模式(一对一 消费者主动拉取数据,消息收到后消息清除)  

  发布/订阅的模式(一对多 消费者消费数据后不会清除数据)

 

kafka基础架构(去中心化)

producer:消息生产者,就是向kafka broker发消息的客户端

consumer:消息消费者,向kafka broker区消息的客户端

consumer Group:消费者组,由多个consumer组成 消费组内的消费者负责消费不同分区内的数据,一个分区只能由一个组内消费者消费,消费者组之间互不干扰,所以有的消费者都属于同一个消费者组,消费者组是逻辑上的一个订阅者

broker:一台kafka服务器就是一个broker,一个集群由多个broker组成,一个broker可以包含多个topic

topic:可以理解为一个队列 生产者和消费者面向的都是一个topic

partition:为实现扩展性,一个非常大的topic可以分不到不同的broker上去,一个topic可以分为多个partition,每一个partition是一个有序队列

replica:副本 为了保证集群中某个结点发生故障时,该节点上的partition数据不丢失,而且kafka能够继续工作,kafka提供了副本机制,一个topic的每个分区都有若干副本,一个leader一个follower

leader:生产者发送数据的对象,以及消费者消费数据的对象都是leader

follower:实时从leader中同步数据,保持和leader数据的同步,leader发生故障时 某个follower会成为新的leader

 

在配置kafka参数时需要修改的是:

broker的全局唯一编号,不能重复
broker.id=0
#删除topic的功能
delete.topic.enable=true

#配置kafka运行日志的存放路径
log.dirs=/usr/local/soft/kafka-xx/log

$连接zk的地址
zookeeper.connect=master:2181,node1:2181,node2:2181


将组件分发到node1和node2上 注意要修改broker编号

 

kafka启动命令:

kafka-server-start.sh -daemon /usr/local/soft/kafka_2.11/config/server.properties

查看当前kafka中所有的topic 命令:

 

kafka-topics.sh --zookeeper master:2181,node1:2181,node2:2181 --list

创建topic的命令:

kafka-topics.sh --zookeeper master:2181,node1:2181,node2:2181 --replication-factor 1 --partitions 1 --topic first --create

注意:
  --topic 定义topic的名称
  --replication-factor 定义副本的个数
  --partitions 定义分区数

删除topic的命令:

kafka-topics.sh --zookeeper master:2181,node1:2181,node2:2181 --topic first --delete

创建生产者生产消息的命令:

kafka-console-producer.sh --broker-list master:9092,node1:9092,node2:9092 --topic 名称

创建消费者的命令:

kafka-console-consumer.sh --broker-list --zookeeper master:9092,node1:9092,node2:9092 --topic 名称

查看某个某刻topic的详情:

kafka-topics.sh --zookeeper master:2180 --describe --topic  名称

修改分区数:

kafka-topics.sh --zookeeper master:2181 --alter --topic 名称  --partition 2

 

 

kafka工作流程及文件存储机制

kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic

topic是逻辑上的逻辑,而partition是物理上的概念,每个partition对应一个log文件,该log文件中存储的就是producer生产的数据 Producer 生产的数据会被不断追加到该log 文件末端,且每条数据都有自己的 offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个 offset,以便出错恢复时,从上次的位置继续消费

 kafka文件的存储机制:

一个topic分为两个partition,一个partition分为多个segment,一个segment对应两个文件

由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了 分片和 索引机制,将每个 partition 分为多个 segment。每个 segment对应两个文件——“.index”文件和“.log”文件。这些文件位于一个文件夹下,该文件夹的命
名规则为:topic 名称+分区序号。例如,first 这个 topic 有三个分区,则其对应的文件夹为 first-0,first-1,first-2。

 

“.index”文件存储大量的索引信息,“.log”文件存储大量的数据,索引文件中的元数据指向对应数据文件中 message 的物理偏移地址

 

 

  

标签:topic,--,partition,broker,kafka,学习,2181,数据
From: https://www.cnblogs.com/lkd0910/p/16934670.html

相关文章

  • SQL注入问题、视图、触发器、事务、隔离级别、MVCC多版本控制、存储过程、函数、流程
    目录SQL注入问题视图触发器创建触发器语法触发器的命名触发器实际应用事务如何使用事务隔离级别MVCC多版本控制存储过程函数流程控制索引相关概念索引数据结构慢查询优化S......
  • Lua学习笔记
    1.注释--单行注释 多行注释--[[--]] 2.变量命名最好不要使用下划线加大写字母作为标示符,因为lua内部的保留字也是这样命名的。Lua不允许使用特殊字符如@,$,和%来定......
  • C#数据结构-七大查找算法
    阅读目录1.顺序查找2.二分查找3.插值查找4.斐波那契查找5.分块查找6.树表查找7.哈希查找下面所有的代码,都已经经过vs测试。1.顺序查找基本思想:顺序查找也称为......
  • 数据库重要理论补充
    目录重要理论补充说明测试索引联合索引全文检索插入数据更新数据删除数据主键外键重命名表事务安全管理隔离级别锁事务日志MVCC多版本控制转换表的引擎作业重要理论补充说......
  • 微信大数据挑战赛:周星星方案汇总
    本文在比赛结束前将持续更新...5.23周星星方案已更新.多模态短视频分类是视频理解领域的基础技术之一,在安全审核、推荐运营、内容搜索等领域有着十分非常广泛的应用。一条......
  • MySQL数据库:14、索引
    MySQL数据库之索引目录MySQL数据库之索引一、索引的概念1、什么是索引2、索引的存储类型3、索引的实现4、什么是存储引擎5、索引的优缺点二、索引的分类1、普通索引和......
  • MySQL数据库:15、视图、触发器、存储过程、函数、流程控制、慢查询优化、索引测试
    目录一、视图1、简介2、创建方法二、触发器1、简介2、创建及使用方法2、1.创建方法2、2.触发器命名规律2、3.实际应用三、存储过程1、简介2、代码实现四、函数五、流程控制......
  • k8s学习笔记
    1.pv学习mysql-pv.yamlapiVersion:v1kind:PersistentVolume#申明资源是pvmetadata:name:pv-mysql-datadir#pv名称labels:pv:mysql-datadir#pv标签,pvc关......
  • MySQL数据库基础6
    今日内容概要SQL注入问题视图触发器事务存储过程函数流程控制索引相关概念索引数据结构慢查询优化今日内容详细SQL注入问题用python编写简易的基于数据库的......
  • 帝国CMS:批量上传Excel数据时候,无法将多图字段写入数据库?
    使用Excel批量上传插件的时候,根据插件规则,已经设置好了Excel表中的多图字段分段规则。但是上传后,发现无法在多图位置展现多图。查询插件的设置时发现都是正确的,前往多图功......