Kafka 教程



  • Kafka 简介

    Apache Kafka起源于LinkedIn,后来在2011年成为开源Apache项目,然后在2012年成为First-class Apache项目。Kafka用Scala和Java编写。Apache Kafka是基于发布-订阅的容错消息传递系统。它是快速,可扩展的,并且可以按设计进行分发。本教程将探讨Kafka的原理,安装,操作,然后逐步引导您完成Kafka集群的部署。最后,我们将通过实时应用和与大数据技术的集成来结束。
  • 应用描述

    在大数据中,使用了大量的数据。关于数据,我们面临两个主要挑战。第一个挑战是如何收集大量数据,第二个挑战是分析收集的数据。为了克服这些挑战,您必须需要一个消息传递系统。Kafka专为分布式高吞吐量系统而设计。Kafka可以很好地替代传统的消息代理。与其他消息系统相比,Kafka具有更好的吞吐量,内置的分区,复制和固有的容错能力,使其非常适合大型邮件处理应用程序。
  • 什么是消息系统?

    消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,而不必担心如何共享数据。分布式消息传递基于可靠消息队列的概念。消息在客户端应用程序和消息传递系统之间异步排队。可用的消息传递模式有两种:一种是点对点的,另一种是发布-订阅(pub-sub)的消息传递系统。大多数消息传递模式遵循pub-sub。
    点对点消息系统:
    在点对点系统中,消息将保留在队列中。一个或多个使用者可以使用队列中的消息,但是特定消息最多只能由一个使用者使用。使用者读取队列中的消息后,该消息将从该队列中消失。该系统的典型示例是订单处理系统,其中每个订单将由一个订单处理器处理,但是多个订单处理器可以同时工作。下图描述了该结构。
    发布-订阅消息系统:
    在发布-订阅系统中,消息保留在主题中。与点对点系统不同,消费者可以订阅一个或多个主题,并消费该主题中的所有消息。在发布-订阅系统中,消息生产者称为发布者,消息消费者称为订阅者。一个真实的例子是Dish TV,它发布了体育,电影,音乐等不同的频道,任何人都可以订阅自己的频道集,并在订阅频道可用时获取它们。
  • 什么是 Kafka

    Apache Kafka是一个分布式的发布-订阅消息传递系统,并且是一个健壮的队列,可以处理大量数据,并使您能够将消息从一个端点传递到另一个端点。Kafka适用于离线和在线消息消费。Kafka消息将保留在磁盘上,并在群集内复制以防止数据丢失。Kafka建立在ZooKeeper同步服务之上。它与Apache Storm和Spark集成得很好,可以进行实时流数据分析。
    好处- 以下是Kafka的一些好处
    • 可靠性 - Kafka是分布式,分区,复制和容错的。
    • 可扩展性 - Kafka消息传递系统可轻松扩展,而无需停机。
    • 持久性 - Kafka使用分布式提交日志,这意味着消息会尽可能快地在磁盘上保留,因此是持久的。
    • 性能 - Kafka具有高吞吐量,可以发布和订阅消息。即使存储了许多TB级别的消息,它也可以保持稳定的性能。
    Kafka速度非常快,可确保零停机时间和零数据丢失。
    用例场景 - Kafka可用于许多用例。其中一些在下面列出
    • 指标 - Kafka通常用于操作监控数据。这涉及汇总来自分布式应用程序的统计信息,以生成集中的运行数据提要。
    • 日志聚合解决方案 -Kafka可以在整个组织中使用,以从多种服务中收集日志,并以标准格式将其提供给多个消费者。
    • 流处理 - 诸如Storm和Spark Streaming之类的流行框架从一个主题读取数据,对其进行处理,并将处理后的数据写入一个新的主题,供用户和应用程序使用。Kafka的坚固耐用性在流处理中也非常有用。
    Kafka的需求
    Kafka是用于处理所有实时数据馈送的统一平台。Kafka支持低延迟消息传递,并在出现机器故障时保证容错能力。它具有处理大量不同消费者的能力。Kafka速度非常快,每秒执行200万次写入。Kafka将所有数据持久保存到磁盘,这实际上意味着所有写操作都将进入OS(RAM)的页面缓存。这使得将数据从页面缓存传输到网络套接字非常有效。
  • 听众

    本教程是为渴望使用Apache Kafka消息传递系统从事大数据分析职业的专业人士准备的。它将使您对如何使用Kafka集群有足够的了解。
  • 先决条件

    在继续本教程之前,您必须对Java,Scala,分布式消息系统和Linux环境有很好的了解。
    如果您未了解Java和Scala,可以到我们的Java教程Scala教程学习。