关于Kafka的介绍
当我们听到 "数据管道 "这个术语时,以下问题立即值得一提。
- 什么是数据管道?
- 它的目的是什么?
- 它与ETL有什么区别?
在数据生产者和数据消费者的情况下,生产者在做一些数据处理、数据治理和数据清洗之前不能发送数据。
数据管道的类型
1.实时数据管道
2.批量数据管道
3.Lambda架构(实时和批处理)
生产者可以发送批量或实时数据。
批量数据。CSV、数据库和主机是传统数据的例子。例如,每周或每月的计费系统。
实时数据。这种信息来自物联网设备、卫星和其他来源。例如,交通管理系统。
在进入中央数据管道之前,批量数据要经过批量摄取,而实时数据要经过流摄取。
什么是批处理和流摄取?
批量摄取是对一段时期内获得的数据进行处理。相比之下,因为流摄取涉及到实时数据,所以处理是逐件进行的。
数据管道是由几个独立的组件组成的。考虑一个ODS(运营数据存储),在那里,批量数据在处理后被分阶段存放。流数据也可以在使用Kafka的Message hub中被分阶段处理。一个NoSQL数据库,如MongoDB,可以作为一个消息枢纽。
由于ODS的存在,企业将能够从多个来源收集数据,并将其存储在一个位置。Kafka是一个分布式数据存储,可用于创建实时数据管道。即使所有这些数据已经被分析过,仍然有可能充实它。MDM可以用来做这个(主数据库管理)。它通过减少错误和冗余来协助处理数据。
当数据准备好后,它可以被交付到预定的目的地,如数据湖或数据仓库。客户可以利用它来创建业务报告、机器学习模型和仪表盘,以及其他东西。
但它与ETL有什么不同?
在ETL管道的末端,数据被放入数据库/数据仓库。另一方面,数据管道显然是不同的,因为它涉及的不仅仅是导入数据。它作为源和目的地之间的联系。这里,ETL管道可以被认为是数据管道的一个子集。
让我们深入了解一下Apache kafka。
Linkedin在将Kafka交给Apache基金会之前开发了它。Apache Kafka是一个开源的平台,与事件一起工作。为了充分理解事件驱动的方法,我们必须首先了解数据驱动和事件驱动方法之间的区别。
**数据驱动。**考虑一个在线零售商,如亚马逊。当顾客A在日期1购买了产品X,数据库就会记录下这笔交易。但如果我们不得不考虑超过2亿的客户,会发生什么?所有的数据都保存在几个数据库中,这些数据库应该相互沟通,并与在线网站沟通。
**事件驱动:**这种方法采用与公司网站相同的互动方式。然而,所有的数据被保存在一个队列中。数据库可以从队列中获得它需要的信息。
什么是事件?
它可能是一个单一的活动或一组商业行为。例如,如果客户A在第1天购买了产品X,一个事件被记录下来,其信息如下。
客户ID- 123
名字- A
订单ID- 001
日期- 1。
Kafka鼓励使用队列来存储事件。任何客户都可以使用这个队列来获取他们需要的信息。
接下来应该想到的问题是:Kafka与其他中间件有什么不同?
1.我们可以在任何时间段内存储大量的数据。
2.3.它对每个事件都是唯一的(即使同一个客户进行第二次购买,因为他或她可能在不同的日期购买产品Y)。
Kafka的另一个值得注意的作用是它使用了 "日志 "数据结构。日志中的OFFSET字段表明了数据的取值范围。它永远不会覆盖现有的数据;相反,它将在最后追加数据。
**日志数据结构。**日志是最基本的数据结构,用于描述一个仅有附加记录的序列。不可变的日志记录是以精确的顺序添加到日志文件的末尾的。
**消息-**行(它是Kafka架构中最小的单位)
**主题--**表
分区--视图
消息(邮件符号)、主题(圆柱形管道)和分区在上面的图片中都是清晰可见的。为了实现容错和可扩展性,这些分区都保持在多个设置中。事件只能在一个分区内进行分类或排序。
Kafka集群。
Kafka经纪人是Kafka服务器的另一个名字。他们从生产者和消费者那里获得数据存储和检索指令。数据复制也被保存在与领导者不同的经纪商中。在发生故障的情况下,复制的经纪人将行使权力。领导者将始终与生产者和消费者互动。一个Kafka集群是许多经纪商的集合。
为了进一步探索,有一些Kafka产品。
1.Kafka核心(主题、日志、分区、经纪人和集群)
2.Kafka Connect(连接主机和数据库)
3.kSQL (为Kafka设计的SQL)
4.Kafka客户端(要连接客户端)
5.Kafka Streams(管理Kafka中的流摄入)
优势
2.完全分布式(容错)。
3.基于事件的方法
4.零停机时间(可扩展的架构)
我们可以清楚地看到,这个数据管道的概念对于现实世界的问题是很有用的,它通过自动化和使数据在单一来源供消费者访问,使其更容易获得洞察力和渐进式分析。它提供了一个灵活的环境。
本文所展示的媒体不属于Analytics Vidhya所有,由作者自行决定使用。