跳转到主要内容
Chinese, Simplified

原始帖子发表在Practical Data Engineering Substanck上


引言


虽然围绕生成人工智能和ChatGPT的广泛炒作席卷了技术世界,但2023年见证了数据工程领域又一个令人兴奋和充满活力的年份,随着分析层次结构的所有层次的不断创新和发展,数据工程领域稳步发展,变得更加多样化和复杂。


随着开源工具、框架和解决方案的不断增加,数据工程师可用的选项成倍增加!在这种快速变化的环境中,跟上最新技术和趋势的重要性怎么强调也不过分。为正确的工作选择正确的工具的能力是一项关键技能,可以确保在面对不断变化的数据工程挑战时的效率和相关性。


作为高级数据工程师和顾问,我密切关注了数据工程趋势,我想在2024年初展示开源数据工程前景。这包括确定关键的活动项目和突出的工具,授权读者在浏览这一动态技术景观时做出明智的决策。


为什么呈现另一种景观?


为什么要努力呈现另一个数据景观!?有类似的定期报告,如著名的MAD Landscape、State of Data Engineering和Reppoint Open Source Top 25,但我所介绍的情况仅专注于主要适用于数据平台和数据工程生命周期的开源工具。


MAD景观为机器学习、人工智能和数据的所有工具和服务提供了非常全面的视图,包括商业和开源,而这里展示的景观为MAD的数据部分中的活动开源项目提供了更全面的视图。其他报告(如Reppoint Open Source Top 25和Data50)更多地关注SaaS提供商和初创公司,而本报告关注的是开源项目本身,而不是SaaS服务。


年度报告和调查,如Github的开源状态、Stackoverflow年度调查和OSS Insight报告,也是深入了解社区中正在使用的内容或趋势的重要来源,但它们仅涵盖整个数据环境的有限部分(如数据库和语言)。


因此,由于我对开源数据堆栈的兴趣,我在数据工程生态系统中编译了开源工具和服务。
因此,无需进一步说明,这里是2024年开源数据工程生态系统:

OSS Data Engineering Landscape 2024

工具选择标准


每个类别的可用开源项目显然是巨大的,因此在图片中包含每个工具和服务是不切实际的。因此,我遵循了以下标准来为每个类别选择工具:

  • 不包括任何退休、存档和放弃的项目。一些著名的退役项目是Apache Sqoop、Scribe和Apache Apex,它们可能仍在某些生产环境中使用。
  • 过去一年里,在Github完全不活跃的项目,以及在社区中很少提及的项目被排除在外。值得注意的例子是Apache Pig和Apache Oozie项目。
     
  • 那些仍然是相当新的项目,在Github明星、分叉以及博客帖子、展示案例和在线社区中的提及方面没有获得太多的吸引力,则被排除在外。然而,提到了一些有前途的项目,如OneTable,它取得了一些显著的进展,并在现有技术的基础上实施。
  • 数据科学、ML和AI工具除外,ML平台和基础设施工具除外,因为我只关注与数据工程学科相关的内容。
  • 列出了不同类型的存储系统,如关系OLTP和嵌入式数据库系统。这是因为数据工程学科涉及处理应用程序和操作系统(BSS)中使用的许多不同的内部和外部存储系统,即使它们不是分析堆栈的一部分。
  • 根据工具在数据堆栈中的位置,选择尽可能通用的类别名称。对于存储系统,主数据库模型和数据库工作负载(OLTP、OLAP)用于对系统进行分组和标记,但例如,“分布式SQL DBMS”在市场上也称为HTAP或可扩展SQL数据库。
  • 一些工具可以属于多个类别。VoltDB既是内存数据库,也是分布式SQL DBMS。但我试图将它们归入市场上最受认可的类别。
  • 对于某些数据库系统,关于它们实际所属的类别,可能存在模糊的界限。例如,ByConity声称是一种数据仓库解决方案,但它是建立在被认为是实时OLAP引擎的ClickHouse之上的。因此,它是否是实时(支持亚秒级查询的能力)OLAP系统仍然不清楚。
  • 并不是所有列出的项目都是完全可移植的开源工具。一些项目是开源的,而不是开源的。在开放核心模型中,并非由主要SaaS提供商提供的整个系统的所有组件都是开源的。因此,当决定采用开源工具时,考虑项目的可移植性和真正的开源程度是很重要的。


工具类别概述


在下一节中,将简要讨论每个类别。


1.存储系统


存储系统是当前环境中最大的类别,这主要是由于最近专用数据库系统的激增。两个最新的趋势类别是矢量和流数据库。Materialize和RaisingWave是开源流式数据库系统的示例。矢量数据库在存储系统领域也在快速增长。我在ML平台部分中放置了向量存储系统,因为它们主要用于ML和AI堆栈。分布式文件系统和对象存储也放置了自己的相关类别,即数据湖平台。
如选择标准部分中所述,存储系统根据主数据库模型和工作负载进行分组和标记。在最高级别,存储系统可以分为三个主要类别:OLTP、OLAP和HTAP。它们可以根据OLTP引擎的SQL与NoSQL以及OLAP引擎的脱机(非实时)与实时(次秒结果)进行进一步分类,如下图所示。

2.数据湖平台


数据湖平台在过去一年中继续成熟,Gartner在其2023年版的数据管理Hype Cycle中将数据湖置于启蒙的斜坡上。

对于存储层,分布式文件系统和对象存储仍然是作为内部部署和基于云的数据湖实现的基础的主要技术。虽然HDFS仍然是用于本地Hadoop集群的主要技术,但Apache Ozone分布式对象存储正在迎头赶上,以提供一种替代的本地数据湖存储技术。Cloudera是主要的商业Hadoop提供商,现在提供Ozone作为其CDP私有云产品的一部分。


数据序列化格式的选择影响存储效率和处理性能。Apache ORC仍然是Hadoop生态系统中柱状存储的首选,而Apache Parquet已成为现代数据湖中数据序列化的事实标准。它的流行源于其紧凑的尺寸、高效的压缩以及与各种处理引擎的广泛兼容性。


2023年的另一个关键趋势是存储层和计算层的解耦。许多存储系统现在提供了与基于云的对象存储解决方案(如S3)的集成,利用了它们固有的效率和弹性。这种方法允许数据处理资源独立于存储进行扩展,从而节省了成本并增强了可扩展性。Cockroachdb支持S3作为存储后端,Confluent在S3上提供长期Kafka主题数据保留进一步体现了这一趋势,突出了数据湖作为经济高效的长期存储解决方案的日益使用。


2023年最热门的发展之一是开放表格格式的兴起。这些框架本质上充当表抽象和虚拟数据管理层,位于数据湖存储和数据层之上,如下图所示。

Data Lakehouse abstraction layers

开放表格式空间目前主要由以下三个主要竞争者之间的霸主争夺战所主导:

  • Apache Hudi:最初由Uber开发和开源,主要设计目标是近实时数据更新和ACID事务。
  • Apache Iceberg:生于Netflix的工程团队。
  • Delta Lake:由Databricks创建和开源,与Databricks平台无缝集成。
    2023年该领域领先的SaaS提供商(Databricks、Tableular和OneHouse)获得的资金强调了市场兴趣及其进一步推进数据湖数据管理的潜力。

此外,随着统一数据lakehouse层的出现,一种新的趋势正在显现。OneTable(最近由OneHouse开源)和UniForm(目前由Databricks提供非开源产品)是去年宣布的前两个项目。这些工具超越了单个表格式,提供了在一个保护伞下与所有三个主要竞争者一起工作的能力。这使得用户能够接受通用格式,同时以其首选格式将数据公开给处理引擎,从而提高了灵活性和敏捷性。


3.数据集成


2023年的数据集成前景不仅见证了Apache Nifi、Airbyte和Meltano等老牌玩家的持续主导地位,还见证了Apach Inlong和Apache SeaTunnel等有前途的工具的出现,这些工具以其独特的优势提供了引人注目的替代方案。


与此同时,在Kafka 生态系统的积极发展推动下,Streaming CDC(Change Data Capture)进一步成熟。Kafka Connect和Debezium插件已成为从数据库系统进行近实时数据捕获的首选,而Flink CDC Connectors正在使用Flink作为主要流处理引擎进行部署。


除了传统数据库之外,CloudQuery和Streampipe等工具正在简化来自API的数据集成,为从不同来源接收数据提供方便的解决方案。这反映了与基于云的服务进行灵活集成的重要性日益增加。


在事件和消息中间件领域,Apache Kafka保持着强大的地位,尽管像Redpanda这样的挑战者正在缩小差距。Redpanda在2023年的1亿美元C系列融资表明,人们对提供低延迟和高吞吐量的替代消息代理越来越感兴趣。

4.数据处理和计算


2023年,流处理领域继续升温!Apache Spark和Apache Flink仍然是卫冕冠军,但Apache Frank在2023年成为了一些严重的头条新闻。AWS和阿里巴巴等云巨头纷纷推出Flink-a-service产品,以及Confluent以其完全管理的Flink-a-service产品收购Immerok,都显示了这一强大引擎背后的动力。


在Python生态系统中,数据处理库(如Vaex、Dask、polars和Ray)可用于开发多核处理器。这些并行执行库进一步释放了在熟悉的Python环境中分析大量数据集的可能性。


5.工作流管理和数据操作


可以说,工作流编排环境是当前数据生态系统中最拥挤的类别,充满了成熟的重量级人物和令人兴奋的新人。


Apache Airflow和Dagster等老牌工具仍然很强大,并且在最近社区中关于工作流编排引擎的拆分、重新绑定和捆绑与拆分的激烈辩论中,它们仍然是广泛使用的引擎。另一方面,在过去两年里,GitHub见证了几个引人注目的竞争者的崛起,获得了巨大的吸引力。Kestra、Temporal、Mage和Windmill都值得一看,每个都提供了独特的优势。无论是专注于无服务器编排(如Temporal),还是分布式任务执行(如Mage),这些新来者都可以满足现代数据管道不断发展的需求。


6.数据基础架构和监控


最近的Grafana Labs实验室调查证实,Grafana Labs、普罗米修斯和ELK堆栈继续主导可观测性和监测景观。Grafana Labs本身非常活跃,引入了新的开源工具,如Loki(用于日志聚合)Mimir(用于长期普罗米修斯存储),以进一步加强其平台。

开源工具似乎不太流行的一个领域是集群管理和监控。这可能源于云迁移趋势,减少了管理大型内部部署数据平台的需要。虽然Apache Ambari项目一度因管理Hadoop集群而受欢迎,但在2019年Hortonworks Cloudera合并后,该项目实际上被放弃了,但最近的复兴为其未来点燃了一些希望。然而,其长期命运仍然不确定。


对于资源调度和工作负载部署,Kubernetes似乎是首选的资源调度,特别是在基于云的平台上。


7.ML平台


机器学习平台是最活跃的类别之一,对向量数据库(Vector databases)有着前所未有的兴起和兴趣,这是一种专门为存储和检索高维数据而优化的系统。正如DB Engines 2023年报告所强调的那样,向量数据库在过去一年成为最受欢迎的数据库类别。


MLOps工具在有效扩展ML项目、确保平滑操作和ML应用程序生命周期管理方面也发挥着越来越重要的作用。随着ML部署的复杂性和规模不断增长,MLOps工具对于简化ML模型的开发、部署和监控变得不可或缺。


8.元数据管理


近年来,在治理和改进数据管理和访问的需求不断增长的推动下,元数据管理占据了中心地位。然而,缺乏全面的元数据管理平台促使Netflix、Lyft、Airbnb、Twitter、LinkedIn和Paypal等科技巨头构建自己的解决方案。


这些努力为开源社区做出了一些显著贡献。Amundsen(来自Lyft)、DataHub(来自LinkedIn)和Marquez(来自WeWork)等工具是自主开发的解决方案,它们已经开源,正在积极开发和贡献。


当谈到模式管理(schema management)时,前景仍然有点停滞。Hive Metastore仍然是许多人的首选解决方案,因为目前没有替代的开源解决方案来取代它。

9.分析和可视化


在商业智能(BI)和可视化领域,Apache Superset脱颖而出,成为许可的SaaS BI解决方案的最活跃和最受欢迎的开源替代方案。


至于分布式和大规模并行处理(MPP)引擎,一些专家认为,大数据已经死了,大多数公司不需要大规模分布式处理,而是选择单个强大的服务器来处理其数据量。
尽管如此,Apache Hive、Impala、Presto和Trino等分布式大规模并行处理(MPP)引擎在大型数据平台中仍然很流行,特别是对于PB级数据。


除了传统的MPP引擎之外,统一执行引擎是另一个获得吸引力的趋势。Apache Linkis、Alluxio和Cube等引擎在上层应用程序和底层引擎之间提供了查询和计算中间件。

结论


对开源数据工程前景的这种探索是对动态和充满活力的数据平台世界的一瞥。虽然突出的工具和技术涵盖了各种类别,但生态系统继续快速发展,新的解决方案不断涌现。
请记住,这不是一个详尽的列表,“最佳”工具最终由您的特定需求和用例决定。请随意分享我错过的任何值得注意的工具,您认为这些工具应该包括在内。


更新:
我已经在Github上创建了一个实时存储库,其中包含完整的列表,并链接到所有列出的项目。请随时跟踪和贡献。

原文地址
https://alirezasadeghi1.medium.com/open-source-data-engineering-landscape-2024-8a56d23b7fdb
本文地址
Article

微信

知识星球

微信公众号

视频号