大数据经典论文解读
徐文浩
bothub 创始人
13844 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 59 讲
大数据经典论文解读
15
15
1.0x
00:00/00:00
登录|注册

27 | Kafka(一):消息队列的新标准

你好,我是徐文浩。
过去的两节课里,我给你介绍了 S4 和 Storm 这两个流式计算框架相关的论文。不过,在讲解这两篇论文的时候,我们其实没有去搞清楚对应的流式数据是从哪里来的。虽然 S4 里有 Keyless PE,Storm 里也有 Spout,它们都是框架自己提供的发送流式数据的机制,这些框架本身并不能产生数据。我们各种应用服务器产生的数据,必须要想一个办法,能够给这些流式数据处理系统。
其实,不只是流式数据处理系统有这个需求,我们之前讲解过的 GFS/MapReduce 这些分布式文件系统,以及大数据批处理系统,一样面临这个“数据从哪里来”的问题。
这个问题,也就是我们今天要探讨的主题,就是我们应该通过一个什么样的系统,来传输数据。这个系统需要满足哪些需求,整个系统架构应该怎么设计。而对于这个问题的解答,就是开源的 Kafka 系统。
同样在 2011 年,来自 LinkedIn 的三位工程师,一起发表了《Kafka: a Distributed Messaging System for Log Processing》这样一篇论文,并且把论文里描述的这个系统 Kafka 开源。这篇论文,可以说帮我们圆上了整个大数据系统的最后一个环节,就是高性能、高可用的数据传输
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Kafka: 构建大数据系统的桥梁 Kafka是一个开源的分布式消息系统,作为连接应用系统、大数据批处理系统和大数据流式处理系统的桥梁。文章介绍了大数据系统的基本框架,指出大数据系统处理的是应用系统或业务系统产生的日志数据。讨论了日志收集系统的问题,强调了HDFS对单个文件的高吞吐量和并发写入的限制,以及日志收集系统的容错机制。指出Kafka的出现填补了大数据系统中数据传输的空白,为大数据系统的发展提供了重要的支持。Kafka的设计与传统的消息队列系统有所不同,能够满足高性能、高可用的数据传输需求。Kafka采用了让所有的Consumer来“拉取”数据,而不是主动“推送”数据给到Consumer的方式,以及采用了一个简单的追加文件写的方式来直接作为消息队列。整个Kafka的系统设计变得特别简单,所有的Producer生成消息和Consumer消费消息都变成了简单的顺序的文件读和文件写。Kafka的出现填补了大数据系统中数据传输的空白,为大数据系统的发展提供了重要的支持。 Kafka的单个Partition的读写实现:Kafka每一个Topic会有很多个Partition,分布到不同的物理机器上。一个物理机上,可能会分配到多个Partition。实际存储的时候,一个Partition是一个逻辑上的日志文件,会给实现成一组大小基本相同的Segment文件。每当有新消息从Producer发过来的时候,Broker就会把消息追加写入到最后那个Segment文件里。Broker会在内存里维护一个简单的索引,这个索引其实就是每个通过一个虚拟的偏移量,指向一个具体的Segment文件。在Consumer要消费数据的时候,就是根据Consumer本地维护的已经处理完的偏移量,在索引里找到实际的Segment文件,然后去读取数据就好了。 优秀的Linux文件系统:Kafka直接使用本地的文件系统承担了消息队列持久化的功能,依赖了Linux文件系统里的页缓存。Kafka写入的数据本质上都还是在Page Cache。Kafka还利用了Linux下的sendfile API,通过DMA直接将数据从文件系统传输到网络通道,所以它的网络数据传输开销也很小。 思考题:Kafka的高可用性和容错机制如何实现? Kafka的整体设计考虑了实时传输和处理数据,以及下游有大量不同的业务应用消费实时产生的日志文件。通过让Consumer自己拉

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大数据经典论文解读》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 在路上
    《Realtime Data Processing at Facebook》这篇论文帮助我建立了对流式处理系统的认识。业务系统允许秒级延迟,而不是毫秒级延迟,使得系统之间可以通过Kafka连接。使用Kafka传输数据带来了额外的好处: 1. 容错:流式处理节点的故障变得独立。 2. 容错:恢复故障变得更快,只需要在其他地方启动一个相同的节点。 3. 容错:自动化的多路复用允许下游运行相同功能的节点,处理相同的输入。 4. 性能:运行上游和下游以不同的速度处理消息,不像背压的一样使得下游会影响上游的执行。 5. 易用:debug更容易,只要启动一个新节点重新消费一遍数据,就能复现错误。 6. 易用:监控和告警变得简单,只要监控流式处理系统的消费Lag。 7. 易用:可以更灵活的编写流式处理系统,因为它们已经通过消息系统解耦了。
    2021-12-08
    1
    15
  • 在路上
    徐老师好,读完2011年的Kakfa论文,我惊讶的发现那时候的分区数据居然没有副本,充分体现了Kafka对业务需求的假设,可以容忍丢失部分日志。Kafka在未来工作中提到,第一、会增加同步和异步的副本模式,并由用户根据业务场景来选择需要的副本模式,第二、会增加流式处理的能力。从最新的Kafka版本来看,Kafka已经实现了这个目标,其中灵活的副本模式就是ISR机制。 Kafka怎么做到高可用呢?第一、Kafka由多个broker构成,通过zookeeper完成分布式协调,当broker宕机时,它负责的主题和分区会分配给其他broker;第二、一个消费者组由多个消费者构成,消费者失联时,它负责的主题和分区会分配给组内其他消费者。第三、一个主题有多个分区,每个分区有多个副本,可以通过ISR机制配置需要多少个同步副本,Leader副本失效时,会从其他副本中选举Leader。第四、消费者位移通过主题来保存,主题的高可用保证了消费者位移的高可用。
    2021-12-08
    2
    13
  • Jialin
    备份机制:同一个 partition 存在多个数据副本:leader & follower ISR 机制:在指定容错时间内,与 leader 保持数据同步的副本机制 ACK 机制:生产者发送消息后,消费者收到消息后的确认机制 故障恢复机制:leader 选举及失败恢复
    2021-12-06
    1
  • bbbi
    老师你好,小文件上传到HDFS 上占用的物理空间应该是文件实际大小吧?不是block size 64M
    2023-05-30归属地:北京
  • Psyduck
    干货满满
    2022-07-10
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部