译者 | 布加迪
审校 | 重楼
我们这个数字世界充满了数据,但实现数据的全部价值可能很困难。如果你是数据工程的新手,可能会对需要学习和理解的种种工具和概念感到有点不知所措。原因在于,从大数据到数据科学,每个有效的数据驱动决策过程都需要设计强大且可扩展的数据管道。
构建数据管道是你应该学习的一项非常重要的技能。数据管道就是将数据从一个位置传输到另一个位置的一系列过程,常常在此过程中改变数据。我相信你一定听说过ETL这个术语,它代表提取、转换和加载。
可以这么想:数据管道类似工厂装配线。原材料(数据)从一端进来,经过几个加工(处理)步骤,然后作为成品(处理过的数据)从另一端出来。
典型的数据管道包括以下几个阶段:
1. 数据摄取:即从各种来源(包括数据库、API和文件系统)收集数据的过程。该步骤负责最初的数据收集,可以实时或批量收集。
2. 数据处理:即对数据进行修改、清理和分组,为分析做准备。该步骤可能包括数据丰富、规范及其他类型的数据操作。
3. 数据存储:即将处理后的数据存储在数据仓库、数据湖或其他存储系统中。所使用的存储系统类型会影响数据的搜索和检查方式。
4. 数据交付:即向最终用户或系统提供用于分析、报告或进一步处理的数据。该步骤通常需要开发数据可视化工具或连接业务智能工具。
随着组织规模和数据复杂性的增加,可扩展数据管道变得更必不可少。构建不力的管道可能会导致性能问题,比如系统崩溃、缓慢的处理速率和延长的停机时间。因此,收入来源会下降,影响消费者满意度。
可扩展数据管道对于企业跟上业务需求的增长速度至关重要。没有它们,企业将无力处理客户或应用程序每天生成的大量数据。据Gartner的一项研究显示,糟糕的数据质量平均每年给企业造成1500万美元的损失,导致数字化计划遭破坏、竞争地位被削弱以及客户不信任。
这就是为什么我们在本文中将介绍如何构建可扩展数据管道的五个技巧。我们将先讨论一些常见的可扩展性问题,最后重点介绍用于构建可扩展数据管道的一些工具和技术。
图1. 北美数据管道市场规模2019年至2030年(单位:10亿美元)
由于金融、医疗保健和零售等行业的采用增加,预计从2023年到2030年,全球数据管道市场将以22.4%的年复合增长率增长。北美目前是市场的领导者,亚太区预计将迎来最快的增长,部分原因是低延迟网络基础设施领域获得投入,比如诺基亚与澳大利亚Optus的合作项目。
不妨看一个真实的场景。
真实场景
不妨考虑一个真实场景:一家正在快速增长的电子商务公司。随着客户群扩大,该公司从网站互动、购买历史记录、客户评论和库存量收集的数据量也随之增加。最初,其数据管道被设计用于处理适度的交易量,但随着销售额在旺季飙升,问题开始出现。
比如在黑色星期五这样的重大销售活动期间,该公司的数据管道力不从心。大量涌入的数据使系统不堪重负,导致实时处理订单和更新库存出现延迟。这可能导致沮丧的客户收到不准确的库存信息或遇到订单确认延迟,从而影响销售额和客户满意度。
为了应对这些挑战,该公司需要扩展数据管道。它可以从实施一套更灵活的架构入手,该架构可以动态调整以适应不同的数据负载。比如说,使用基于云的服务便于它在热销活动期间分配更多的资源,在较平淡的期间缩减资源,确保它可以处理数据峰值而不会出现问题。
此外,该公司可以集成流数据处理框架来实时分析进入的数据。这意味着它可以即时监控销售趋势和库存量,从而能够更快地根据数据做出决策。通过增强数据管道的可扩展性,该公司不仅提高了运营效率,还提高了客户信任度和留住率。
数据管道中的常见可扩展性问题
数据管道中的可扩展性问题可能会很快变得混乱,尤其是当数据量和复杂性增加时。以下是一些最常见的挑战:
1. 数据处理方面的瓶颈
随着数据负载增加,管道可能难以实时处理所有数据。如果管道的某一部分(比如转换或丰富步骤)很缓慢,可能会阻碍其他所有步骤,造成波及整个系统的延迟。这就像一家繁忙的咖啡店里慢吞吞的咖啡师;如果某一步卡住了,其他步骤有多快都不重要。
2. 存储和检索速度
由于大量数据流入,存储系统可能难以跟上,从而导致数据检索和处理时间变慢。传统数据库可能无法有效扩展,在访问数据进行分析或报告时导致延迟。数据仓库和云存储解决方案是更具可扩展性的选择,但它们须认真加以管理,以免遇到性能瓶颈。
3. 处理数据峰值
许多数据管道在流量突然激增时会崩溃。比如说,零售公司在节日销售或产品发布期间可能会遇到大量数据。如果没有自动扩展功能,管道可能不堪重负,导致数据丢失或延迟,最终影响公司实时响应需求的能力。
4. 数据质量和一致性
当管道扩展时,跨数据源维护数据质量可能成为一大挑战。在快速从不同来源提取数据时,经常会出现不一致和丢失数据的情况。这些问题不仅减慢处理速度,还会导致获得的洞察力不准确,从而误导决策者。
5. 资源争用
随着管道扩大,相互竞争的流程(比如同时运行的多个ETL作业)可能会争夺相同的资源,从而降低彼此的速度。这可能导致不可预测的性能,其中某些作业被延迟,或者数据被无序处理。
然而,非常仔细的规划和准备加上可靠的执行可以解决这些可扩展性问题。下面介绍的技巧可发帮助你构建可扩展的数据管道。
构建可扩展数据管道的技巧
构建可扩展的数据管道需要时间和精力才能入手,旨在创建一个随着组织需求而增长的系统,又不错过任何机会。随着公司不断扩张,这么做绝对是值得的。以下是确保数据管道可扩展的五个关键的实用技巧:
1. 选择正确的架构
说到可扩展性,架构就是一切。精心选择的架构可以处理增加的数据负载或处理需求,而不陷入困境或需要进行重大改动。这通常意味着考虑分布式系统,这种系统允许你在需求增加时,通过向架构中添加更多的节点进行横向扩展。
基于云的解决方案在这方面很出色,特别是在高流量期间,提供了基于使用模式快速扩展或缩减基础设施的灵活性。关键是要有一套不仅现在稳健,而且适应性足够强的架构,以支持新的数据源和更高的处理需求。
2. 实施智能数据管理
可靠的数据管理策略是任何可扩展管道的支柱。先定义你在处理什么,又需要达到什么目标。如果你专注于分析结构化数据以获取商业智能,传统的数据仓库可能是最佳选择。但如果你在处理大量的非结构化数据,比如社交媒体流或物联网传感器数据,数据湖可能是更好的选择。
数据湖允许你以原始形式存储数据,这对于各种格式的非结构化数据非常理想。这种无需不断重新格式化就能处理结构化数据和非结构化数据的灵活性有助于确保管道的效率和适应性。
3. 充分利用并行处理
数据处理可能会变得工作量很大,尤其在处理大量数据时。为了便于管理,不妨考虑并行处理。把任务分解成可以同时运行的小块。比如说,如果你的管道处理TB级的数据,将其分成不同处理系统可以同时处理的部分。这加快了整体处理速度,使你的管道更具弹性,因为任务不必排队等待处理。许多大数据框架(比如Apache Spark)在设计时就考虑了并行处理,这使得它们对于可扩展的管道大有价值。
4. 优化数据处理
即使有了可靠的架构,优化也是保持系统平稳运行的关键。先减少不必要的数据转换,因为每个转换都需要时间和资源。如果你重复处理相同的数据,考虑缓存结果,以避免冗余工作。使用更快的算法和尽量减少数据移动也有帮助——每次数据移动都会产生瓶颈。这对增量更新也大有助益。不是从头开始重新计算一切,仅仅处理新的数据或更改的数据。这不仅减轻了系统的压力,还使处理时间更易于预测。
5. 优先考虑实时处理和适应性
可扩展性不仅仅旨在处理更多的数据,还旨在满足未来的需求,并在需要时为实时处理留出空间。如果你的团队依靠数据做出快速、明智的决策,就要争取构建可以支持实时处理或近实时更新的管道。
这可能意味着添置数据流技术或支持快速数据摄取和处理的框架。此外,确保你的管道设计有更改的空间:新的数据源、更新的业务需求或不断涌现的分析需求不应该每次都需要从头开始。
构建可扩展数据管道的工具和技术
下面是一些用于构建可扩展数据管道的主要工具和技术。每个都提供了独特的功能和可扩展选项,因此选择通常依赖特定的管道需求、青睐的编程语言以及现有的技术基础设施。
- Apache Kafka:用于构建实时数据管道和应用程序的分布式流平台。Kafka具有高度可扩展性,旨在处理大量的动态数据。
相关链接:https://kafka.apache.org/
- Apache Spark:用于大规模数据处理的强大分析引擎。Spark通过分布式并行处理支持批处理和实时处理,使其成为可扩展数据管道的理想选择。
相关链接:https://spark.apache.org/
- Airflow:由Apache开发的开源工作流管理工具,便于你自动化和调度复杂的数据工作流。Airflow具有可扩展性,并支持DAG(有向无环图),因而非常适合编排可扩展的管道。
相关链接:https://airflow.apache.org/
- dbt(数据构建工具):dbt是一个数据转换工具,允许数据工程师处理复杂的转换工作流。它可以很好地与数据仓库一起工作,并凭借版本控制和易于协作支持可扩展转换。
- Snowflake:一款数据仓库解决方案,内置了处理大规模分析和数据工程的功能。Snowflake的云原生架构支持高效的扩展和管道集成。
相关链接:https://www.snowflake.com/
- Databricks:一款基于Apache Spark的统一分析平台。Databricks为大规模数据工程而设计,它借助面向数据科学和工程的协作特性使用户很容易构建和管理可扩展的数据管道。
结论
如果关注架构、数据管理、并行处理和深入优化,你就可以建立一个可扩展、高效、为未来做好准备的数据管道。
记住,可扩展性的目的不仅仅是容纳更大的数据量,而是增强快速响应不断变化的业务需求和利用实时洞察力的能力。从选择的架构到实施的数据处理技术,你所做的每个决定都会影响管道的性能和适应性。
所以,无论你是刚开始构建管道还是想要完善现有的管道,都要记住这些技巧。拥抱挑战,将你的数据管道变成推动贵公司向前发展的潜在动力。
原文标题:5 Tips for Building Scalable Data Pipelines,作者:Shittu Olumide