数据流水线架构

简介: 数据流水线架构

对数据的获取、存储、处理、分析、查询、可视化,构成了数据的完整生命周期,并为商业洞见提供支持。从技术上来说,有一系列的开源系统共同构成了数据处理的流水线。原文:Data Pipeline Architecture[1]


我经常对一些个人项目进行数据分析并尝试得出一些有用的结果。但我们都知道,在数据行业里没有干净的数据,总是需要对数据进行手工或者自动的处理。因此数据工程师应该首先考虑如何设计数据流水线,用于获取、存储和管理数据。


数据流水线在银行零售部门(retail banking industry)是如何运作的?


银行的零售部门总是基于数据来决定业务的运作,比如产品推荐、流失预测、贷款审批、客户细分等,通常其需要的数据不会很清晰。此外,将数据存储在一台机器中是非常危险和低效的,银行业应该转而使用大数据技术来处理。


当我们使用大数据技术进行数据处理的时候,并不是用一台机器来处理所有的事情,而是用 5 台机器来处理。使用更多的机器,系统速度会更快、更方便扩展、也更容易维护[2]

批处理数据流水线架构


通常需要考虑 3 个系统,分别是数据源、基础设施系统和终端系统(请注意,这只是我自己的解释,其他人可能会有不同的说法)。


image.png


批处理数据流水线架构


数据源(Data Sources)


数据的来源各种各样,如自动柜员机(ATM)、软件、用户交互、客户服务对话,并且大部分都包含事务性数据。可以将其视为数据市场(Data Mart),它是特定于数据仓库环境的结构以及访问模式,可用于检索面向客户的数据。收集到的所有数据都将存储在一台特定的机器上,这些是未经处理的原始数据。


基础设施系统(Infrastructure Systems)


这里有很多我们需要了解的系统,分别用于数据提取、数据调度、数据处理、数据仓库和查询引擎。

数据提取(Ingestions)


提取模块用于负责从数据源读取数据的过程,该模块通过 API 从每个数据源读取数据。在我们提取这些数据之前,需要首先进行数据剖析(data profiling)——通过检查其特征和结构,看看是否适合我们的业务。

之后,数据被分批提取。批处理流程可以在一个组里提取多组记录。在存储了很长时间的原始数据之后,通过这个过程提取数据。它并不会实时收集数据,而是按照计划执行,例如每周、双周、每月、季度和年度计划来提取数据。


Python 是在这个过程中可以使用的工具之一。对于较小的项目来说,只用 python 就足够了。更大的项目可以使用任何支持数据提取的云服务,如 GCP、Azure、AWS 等。

数据调度(Scheduler)


调度器用来决定什么时候应该在其他平台上接收和处理数据。在上图中,可以使用 Apache Airflow[3]为这种情况创建一个时间表。它将安排何时从数据仓库提取数据,何时处理数据。注意,Airflow 不是数据流解决方案。

数据仓库(Warehouse)


数据仓库是我们存储从数据市场收集到的数据的地方。在 GCP 中,可以使用 BigQuery 和 Cloud Storage 进行存储。大多数情况下,BigQuery 可以处理关系型数据,而 Cloud Storage 可以处理非结构化数据,如图像、声音、视频和文本。BigQuery 和 Could Storage 之所以受到大多数公司的青睐,是因为它们提供了几乎从不间断的可用性,使我们不必担心和处理基础设施。我们需要考虑哪种 BigQuery 和 Cloud Storage 计划最适合我们的用例,从而尽可能优化总成本。不过要注意,并不是所有场景都适合云存储,尤其考虑到在银行零售业务中,某些政策可能会限制云存储的使用,比如不能将敏感数据分享给云服务商。因此,私有的现场数据库更适合这些策略。

数据处理(Processing)


当数据存储被存储到仓库中,就可以对其进行处理并转换为更合适的格式。BigQuery 可以通过 SQL 查询来处理这个问题,但是使用 Apache Spark 可能会更加灵活。我们可以用 python 编写 Apache Spark 代码,对数据进行处理和转换,并存储到 BigQuery 中。Spark 比 pandas 更适合处理大数据[4]。和 pandas 相比,Spark 的缺点在于缺乏可视化的手段。

查询引擎(Query Engine)


查询引擎是编写 SQL 代码和提取请求数据的引擎,是位于数据库或服务器之上的一段软件,对数据库或服务器中的数据执行查询操作,为用户或应用程序提供答案,其获取的数据可能会被终端用户使用。查询引擎工具有 BigQuery、Presto、Apache Drill、M3 等。

终端系统(End Systems)


最后,终端用户通过各种应用程序接收处理、转换和存储的数据。数据分析师和商业智能系统可能会使用可视化工具,如 Data Studio、Tableau、Qlik 和 PowerBI 来创建一些仪表板或根据数据进行分析。数据科学家和机器学习工程师可以使用提取的数据来开发一些模型、A/B 测试,并使用类笔记本应用程序(如 jupyter notebook、谷歌 colab 和 watson studio)找到一些有意义的商业洞见。


结论


最后,数据流水线的意义是为业务和数据团队提供现成的数据。对于数据工程师来说,为业务选择最合适、最有效的系统和基础设施是一个挑战。


参考文献



Reference:

[1] https://medium.com/@diemasaksyafachriza/data-pipeline-architecture-28687d7dce6b

[2] https://www.tutorialspoint.com/hadoop/hadoop_introduction.htm

[3] https://airflow.apache.org/docs/apache-airflow/stable/index.html

[4] https://towardsdatascience.com/stop-using-pandas-and-start-using-spark-with-scala-f7364077c2e0

目录
相关文章
|
14天前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
37 8
|
15天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
126 7
|
15天前
|
数据采集 搜索推荐 数据管理
数据架构 CDP 是什么?
数据架构 CDP 是什么?
39 2
|
4月前
|
机器学习/深度学习 数据采集 人工智能
揭秘!47页文档拆解苹果智能,从架构、数据到训练和优化
【8月更文挑战第23天】苹果公司发布了一份47页的研究文档,深入解析了其在智能基础语言模型领域的探索与突破。文档揭示了苹果在此领域的雄厚实力,并分享了其独特的混合架构设计,该设计融合了Transformer与RNN的优势,显著提高了模型处理序列数据的效能与表现力。然而,这种架构也带来了诸如权重平衡与资源消耗等挑战。苹果利用海量、多样的高质量数据集训练模型,但确保数据质量及处理噪声仍需克服。此外,苹果采取了自监督与无监督学习相结合的高效训练策略,以增强模型的泛化与稳健性,但仍需解决预训练任务选择及超参数调优等问题。
152 66
|
2月前
|
存储 大数据 数据处理
洞察未来:数据治理中的数据架构新思维
数据治理中的数据架构新思维对于应对未来挑战、提高数据处理效率、加强数据安全与隐私保护以及促进数据驱动的业务创新具有重要意义。企业需要紧跟时代步伐,不断探索和实践新型数据架构,以洞察未来发展趋势,为企业的长远发展奠定坚实基础。
|
3月前
|
存储 搜索推荐 数据库
MarkLogic在微服务架构中的应用:提供服务间通信和数据共享的机制
随着微服务架构的发展,服务间通信和数据共享成为关键挑战。本文介绍MarkLogic数据库在微服务架构中的应用,阐述其多模型支持、索引搜索、事务处理及高可用性等优势,以及如何利用MarkLogic实现数据共享、服务间通信、事件驱动架构和数据分析,提升系统的可伸缩性和可靠性。
49 5
|
4月前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
4月前
|
存储 监控 安全
大数据架构设计原则:构建高效、可扩展与安全的数据生态系统
【8月更文挑战第23天】大数据架构设计是一个复杂而系统的工程,需要综合考虑业务需求、技术选型、安全合规等多个方面。遵循上述设计原则,可以帮助企业构建出既高效又安全的大数据生态系统,为业务创新和决策支持提供强有力的支撑。随着技术的不断发展和业务需求的不断变化,持续优化和调整大数据架构也将成为一项持续的工作。
|
4月前
|
Java 数据库连接 微服务
揭秘微服务架构下的数据魔方:Hibernate如何玩转分布式持久化,实现秒级响应的秘密武器?
【8月更文挑战第31天】微服务架构通过将系统拆分成独立服务,提升了可维护性和扩展性,但也带来了数据一致性和事务管理等挑战。Hibernate 作为强大的 ORM 工具,在微服务中发挥关键作用,通过二级缓存和分布式事务支持,简化了对象关系映射,并提供了有效的持久化策略。其二级缓存机制减少数据库访问,提升性能;支持 JTA 保证跨服务事务一致性;乐观锁机制解决并发数据冲突。合理配置 Hibernate 可助力构建高效稳定的分布式系统。
69 0
|
4月前
|
存储 缓存 Java
Android项目架构设计问题之优化业务接口数据的加载效率如何解决
Android项目架构设计问题之优化业务接口数据的加载效率如何解决
47 0