晓谈数据工程4-数据管道
编辑:小编 日期:2024-04-10 10:11 / 人气:
这是数据工程概念系列 10 部分中的第 4 部分。在这一部分中,我们将讨论数据管道。
内容:1. 数据管道2. 数据管道的类型3. 如何实现数据管道4. 如何防止数据管道破损5. Apache Kafka
它是一组将数据从一个系统传输到另一个系统并在此过程中执行一些转换的过程。数据管道中有六个主要阶段,如下图所示:
1. 批处理管道批处理管道批量处理数据,并以不同的执行时间定期执行传输数据的操作。它通常用于对历史数据进行数据分析,以得出业务模式和趋势。ETL过程小批量执行,最终数据放置在数据仓库中用于商业智能操作。
2. 实时/流数据管道这是一种数据管道,用于处理从近实时数据和性能分析中持续摄取和检索见解,以更新可用的指标、报告和摘要统计数据以响应每个可用事件。用于了解金融股市等实时事件的波动。
对于大型非结构化数据集,并且当及时性很重要时,ELT 过程(“提取、加载和转换”)比 ETL 更合适。首先,从不同的流媒体源中提取数据并将其加载到数据仓库中,然后转换仓库中的数据以使其兼容实时分析管道。
例如:作为全球移动服务提供商,Uber 严重依赖机器学习来运行动态定价(根据实时数据调整费率)、计算最大预计到达时间、预测需求和供应以及执行其他复杂任务。
由于该公司的目标是近乎实时地获得可行的见解,因此它使用流管道从驾驶员和乘客应用程序中获取当前数据。数据流基础设施的核心组件是Apache Flink,它是一个分布式处理引擎,能够计算供需事件流中的特征。这些特征被输入到机器学习模型中,以每分钟生成预测。与此同时,Uber 利用批处理来识别中长期趋势。
3. 零ETL/数据复制零ETL是指将数据从源传输到目的地而不进行任何重大转换并将数据从不同数据源复制到数据仓库的过程。它通常在相同的云基础设施上实施,以实现更快、更高效的数据传输。
4. 数据虚拟化/数据共享数据虚拟化是一种提供访问数据源的接口的方法,无需任何物理数据传输,仅通过逻辑层允许用户根据需要查询数据。
可以按照以下几个步骤为应用设计数据管道:1. 在与业务利益相关者讨论其需求后决定数据源。还要询问他们多久需要一次数据。2. 定义 ETL 管道3. 使用数据编排工具定期设置自动工作流程。4. 设置监控工具来检查数据质量5. 记录业务逻辑的工作流程、配置和依赖性。
可以采取多种预防措施来防止损坏:1. 设计独立的管道,使其每次运行时都产生相同的结果。2.添加验证检查,使数据符合预定义的质量标准。3. 维护版本控制以恢复到以前稳定的管道代码4. 隔离开发、生产和 QA 环境以及数据分区,以提供数据子集并易于识别错误5. 将配置存储在远离代码的位置,以便轻松管理它们6. 使用增量数据处理技术使检查点恢复到7.建立警报系统和数据可观察性模型来跟踪错误原因
Apache Kafka 是一个开源分布式流平台,允许开发实时事件驱动的应用程序。它是一种快速、准确、有序且容错的工具。Kafka主要提供消息队列、数据摄取和数据集成功能。
生产者是将数据发布到 Kafka 集群的实体,该集群由代理组成。每个经纪人负责存储数据。消费者在称为offset 的给定位置消费数据。
它提供了消息队列功能,用于侦听由生产者流式传输并由消费者订阅的消息。通过促进对所发送信息的跟踪,使交互解耦、简化、可扩展且可靠。
Kafka 有 4 个核心 API:1.生产者 API- 它帮助生成流数据并将其存储到按事件流数据顺序排列的主题中2.消费者 API -它通过订阅主题来消费来自主题的数据3.流 API- 它允许使用主题中的数据并对其进行转换并生成新数据以存储在相同或不同的主题中4.连接器 API —它允许开发人员编写可重复使用的生产者和消费者,例如从 MongoDb 资源获取数据
示例:鞋类电子商务网站正在跟踪用户的活动并将其存储在 Kakfa 集群中,消费者应用程序每晚对类似商品搜索执行批量工作并向用户发送电子邮件,或者可以提供实时分析的建议。
其他用例:1. 实时处理 -对于自动驾驶车辆,我们需要像 Kafka 这样的实时摄取系统来导航2. 指标/ KPI -异常检测系统可以从 Kafka 接收 CPU 使用率、错误率等综合指标3.日志聚合 -日志聚合工具可以处理来自 Kakfa 的日志流数据或将其馈送到 SIEM(安全信息和事件管理)系统4. 消息传递 -微服务系统可以使用 Kafka 发送消息,以向不同的系统提供共享信息等消息。