![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kafka
文章平均质量分 52
有上进心的阿龙
吃不了自律的苦,就要受平庸的罪!学到老,活到老!
展开
-
16_Kafka高级_数据一致性问题
(1)follower故障 follower发生故障后会被临时踢出ISR,待该follower恢复后,follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉,从HW开始向leader进行同步。等该follower的LEO大于等于该Partition的HW,即follower追上leader之后,就可以重新加入ISR了。 (2)leader故障 leader发生故障之后,会从ISR中选出一个新的leader,之后,为保证多个副本之间的数据一致性,其余的follower会先将各自的.原创 2021-01-08 20:13:46 · 142 阅读 · 0 评论 -
15_Kafka高级_生产者ACk机制
3)ack应答机制 对于某些不太重要的数据,对数据的可靠性要求不是很高,能够容忍数据的少量丢失,所以没必要等ISR中的follower全部接收成功。 所以Kafka为用户提供了三种可靠性级别,用户根据对可靠性和延迟的要求进行权衡,选择以下的配置。 acks参数配置: acks: 0:producer不等待broker的ack,这一操作提供了一个最低的延迟,broker一接收到还没有写入磁盘就已经返回,当broker故障时有可能丢失数据; 1:producer等待broker的ack,partition的le原创 2021-01-08 19:49:03 · 191 阅读 · 0 评论 -
14_Kafka高级_生产者ISR
生产者数据的可靠性保证。 刚才已经讲完了,数据发到哪个分区,但是,数据生产者已经发过去了,但是kafka有没有接到,那就是另一个问题。现在就准备讲,生产者数据的可靠性保证怎么实现的。 生产者发送数据一般是和leader进行交互的,怎么才能保证数据不丢失呢? 正常来说生产者是给leader来发消息的,follower向leader同步数据。 那什么时候发送ack呢? 比较半数机制和全部机制: kafka选择了这种: 但是这种方案有个问题就是,同步的时候,有个副本挂了,而且很久才能好起来,那就需原创 2021-01-08 18:52:08 · 187 阅读 · 0 评论 -
13_Kafka高级_生产者分区策略
刚才主要讲的是存储的内容,主要的index和.log两个文件。 kafka的生产者:有个分区策略: 分区的原因: 1、可以以partition为单位进行读写 2、提高集群的负载能力。 生产者分区的原则: 可以在生产数据的时候, 1、指定分区号,指定将来这条消息进入到哪个分区。 2、当然,也可以不指定分区号,但是又KV键值对。是按照key的hash值再%当前主题分区的个数。和MR hash分区规则一样。 3、既没有指定要发到哪个分区,也没有指定key,key=null,那就轮询。但是第一条给谁不清楚,随原创 2021-01-08 17:37:35 · 158 阅读 · 0 评论 -
12_Kafka高级_文件存储
实际上能看到的就是topicName+partitionID这个文件。 这个文件下有两个东西很重要。 .log结尾的文件是真正存储数据的。 .index是存放索引的。 先看看.log文件:默认会存储7天。七天过了会把这些老的数据删除掉。 再server.properties配置文件种,还有一个参数:存储1G 这个log是这个 而不是它的日志。 如果这个文件超过了1G,就会再创建一个文件。而不会再往里面放数据了。 超过1G之后,新创建一个文件,怎么命名呢? 1G的文件,存储的都是消息,怎么快速从1.原创 2021-01-08 16:55:44 · 101 阅读 · 0 评论 -
11_Kafka高级_工作流程
kafka的工作流程和文件存储机制: 当生产者往一个不存在的主题发送数据的时候,也可以发送。自己会帮你创建主题,一个分区,一个副本。是server.properties文件里面配置的。这是默认值。 我们一般会先创建topic叫做topicA topicA有三个分区,两个副本。 副本数=2,是说,leader+follower=2 partition-0的follower一定不会和partition-0的leader在同一个broker(节点)。因为没有任何意义。 现在生产者往三个broker里面发送原创 2021-01-08 14:37:42 · 188 阅读 · 1 评论 -
09_Kafka入门_数据日志分离
关闭kafka 但是会有延时,关闭的比较慢。 之后再看一下就没了,需要等待一下。 我们删除每台机器的logs文件夹: 我们希望把数据和logs分开来放。 这时候,就相当于kafka新装的一样。 这时候需要注意:还有很多信息再zi里面。 进入zk根目录: 除了zk,其他的都是kafka的数据。 在kafka里面,并没有指定哪个broker是老大。那它怎么直到102 103 104是一个kafka集群呢? 就是通过zk 因为,我们在102 103 104上装的kafka连的都是同一套zk,原创 2021-01-08 14:15:15 · 340 阅读 · 0 评论 -
任务8:08_Kafka入门_命令行控制台生产者消费者
刚才已经学习了主题的增删查学习了。 缺的就是生产者和消费者。 生产者和消费者有专门的命令。 控制台的生产者,控制台的消费者。 既然是生产者,就需要告诉我,你要往哪个主题生产。往这个first主题生产的时候,你需要告诉我连接哪个kafka的集群。因为kafka集群和cosumer这块,是需要往zk里面存数据的。 –broker-list hadoop102:9092 这里的9092的端口号主要是因为要连接kafka本地集群。 在102上开启生产者: 这里出现一个小箭头。 在这里就可以输入一些消息了。也就是原创 2021-01-08 12:31:45 · 241 阅读 · 0 评论 -
任务7:07_Kafka入门_命令行操作Topic增删查
我们现在已经安装好了kafka并且写好了群起kafka的脚本 熟悉几个命令: 关于kafka的主题增删改查都用它 –list:属于把topic类出来。 –describe:查看当前主题的详情,查看分区数,副本数等 –create:创建 –delete:删除topic 当前的kafka集群是新创建的,并没有topic,所以执行完–list之后,什么也不显示。 我们现在需要去手动创建主题。 同样,你拿数据往zk里面拿,写数据就要往zk里面写,所以连的还是zk 创建topic的时候,需要指定zk,需要设置分区原创 2021-01-08 00:05:56 · 138 阅读 · 0 评论 -
任务6:06_Kafka入门_安装&启动&关闭
启动kafka之前需要启动zk 因为kafka是依赖于zk的。 使用的版本是0.11的 前面的2.11是scala的版本,因为kafka使用scala写的。 将压缩包放到/opt/software里面。 解压: 改名 进到kafka目录下面: 进到conf目录里面: 需要修改的是server.properties文件 可以看到配置文件里面也有消费者和生产者的配置信息。 都是给命令行使用的,做测试。 改动server.properties文件。 1、修改文件里面的broker.id bro原创 2021-01-07 19:57:50 · 123 阅读 · 0 评论 -
任务5:05_Kafka入门_基础架构
之前flume分为: source+channel+sink 这里kafka也有组件 生产者,消费者,kafka集群 生产者:后台 消费者:类似spark 我们这里说消息,flume那里说事件,其实就是封装了,里面是一条数据。 生产者能生产消息前提是:kafka集群必须启动。kafka是一个分布式的。 每一个broker是一个啥? 是一个服务器,只不过,相当于起的一个kafka的进程。 这三台服务器组成了kafka集群。 存数据存在broker里面。如果只有一个broker服务器来存储数据,消息容易乱套,如原创 2021-01-07 18:58:21 · 93 阅读 · 0 评论 -
任务4:04_Kafka入门_消费模式
消息队列的两种模式: 点对点模式:一对一,消息只能给一个人,比较单一。 明显感觉到点对点的模式缺点:就是不可复用,加入这个消息需要给多个人处理,就会很麻烦,flume可以给多个,但是需要多个channel和多个sink 点对点模式如果要复用,就必须发给多个消息队列,然后消费者再去接收。浪费资源。 发布/订阅模式(kafka): 一对多。 它只是一个消息队列,不是文件存储系统,所以保存是有时间限制的,不像hdfs,它有时限要求。 类似于,公众号主动推送文章,大家都能收到消息。 点对点模式:是消费者主动去拉原创 2021-01-07 15:47:48 · 93 阅读 · 0 评论 -
任务3:03_Kafka入门_消息队列
消息队列: 我和技术老师的通信通过班主任进行对接。 队列的数据结构:先进先出 需要通信,没有消息队列,只能直连,两人保证都要在线。 同步处理: 同步处理的特点:不高效,所有的事情是串起来的。 异步处理: 同步VS异步: 拿修手表的事情: 同步:你给他修,然后我必须坐在那里等着。 异步:约定时间,两天后再来取,我自己做我自己的事情,不耽误。 异步的好处就是: 1、解耦。不需要两个人同时在线 2、销峰。到高峰期的时候,服务器可能会崩,这个时候不直连,先把它放到MQ里面,接下来总有一刻不是高峰期。如果一直是高原创 2021-01-07 15:20:30 · 70 阅读 · 0 评论 -
任务2:02_Kafka入门_定义
kafka是一个分布式的,发布/订阅模式的消息队列。 说一说MQ的模式有哪些: 发布/订阅。。。。 kafka应用于大数据实时处理的领域。 如果spark作为实时分析框架的话,90%以上的数据来源是和kafka对接的。 所以kafka在大数据实时领域的重要性。 在以后学习sparkstreaming那里,和kafka对接的代码是学习的重要内容。有些公司直接让你敲那部分代码。 所以总结: kafka就是一个MQ消息队列。 ...原创 2021-01-07 14:57:58 · 73 阅读 · 0 评论