2024 開源數據工程生態系統全景圖

来源:https://www.cnblogs.com/seatunnel/p/18110816
-Advertisement-
Play Games

作者 | ALIREZA SADEGHI 翻譯 | Debra Chen 簡介 雖然生成式人工智慧和ChatGPT帶來的沸沸揚揚的炒作令科技界為之一振,但在數據工程領域,2023年仍然是一個令人振奮和充滿活力的一年,數據工程生態系統變得更加多樣化和複雜化,系統中的所有層面都在不斷創新和演進。 隨著各 ...


file

作者 | ALIREZA SADEGHI

翻譯 | Debra Chen

簡介

雖然生成式人工智慧和ChatGPT帶來的沸沸揚揚的炒作令科技界為之一振,但在數據工程領域,2023年仍然是一個令人振奮和充滿活力的一年,數據工程生態系統變得更加多樣化和複雜化,系統中的所有層面都在不斷創新和演進。

隨著各種開源工具、框架和解決方案的持續涌現,數據工程師的選擇也越來越多!在這樣快速變化的環境中,緊跟最新技術和趨勢的重要性不言而喻。選擇合適的工具來完成合適的工作是一項至關重要的技能,確保在不斷變化的數據工程挑戰面前保持效率和相關性。

作為一名資深數據工程師和顧問,我一直密切關註著數據工程趨勢,我想在2024年初向大家介紹開源數據工程生態系統,包括識別關鍵的活躍項目和重要工具,讓大家在這個充滿活力的技術領域中能夠做出明智的決策。

為什麼要再出一份生態全景圖?

為什麼我要再出一份數據生態系統全景圖呢?雖然有類似的周期性報告,比如著名的MAD Landscape、數據工程現狀和Reppoint開源Top25,但我做的這份全景圖專註於僅適用於數據平臺和數據工程生命周期的開源工具。MAD Landscape提供了對機器學習、人工智慧和數據的所有工具和服務的非常全面的概覽,包括商業和開源項目,而本報告呈現的生態系統則更全面地展示了MAD中關於數據部分的活躍開源項目。其他報告,比如Reppoint開源Top25和Data50更關註SaaS提供商和創業公司,而本報告則更關註開源項目本身,而非SaaS服務。

像Github的開源現狀、Stackoverflow年度調查和OSS Insight報告這樣的年度報告和調查也是瞭解社區中正在使用或趨勢的重要來源,但它們涵蓋的數據生態系統有限(如資料庫和編程語言)。

因此,我出於對開源數據棧的興趣,便整理了數據工程生態系統中的開源工具和服務。

所以,不多說了,這就是2024年的開源數據工程生態系統:

file

開源數據工程生態系統2024年

工具選擇標準

每個類別的可用開源項目顯然數目龐大,把每個工具和服務都納入其中是不現實的。因此,我遵循了以下選擇每個類別工具的標準:

  • 排除了任何已退休、存檔和被放棄的項目。大家很關註的退休項目包括Apache Sqoop、Scribe和Apache Apex,雖然它們仍然可能在一些生產環境中使用。
  • 排除了過去一年在Github上完全不活躍的項目,以及在社區中幾乎未被提及的項目。比如Apache Pig和Apache Oozie項目。
  • 排除了仍然相對較新且在Github上沒有獲得太多關註(如stars、forks)以及在博客文章、案例展示和線上社區中幾乎未被提及的項目。但是一些有前景的項目,如OneTable,已經取得了一些值得註意的進展,並且是基於現有技術構建的。
  • 除了機器學習平臺和基礎設施工具,數據科學、機器學習和人工智慧工具被排除在外,因為我只關註與數據工程學科相關的內容。
  • 不同類型的存儲系統,如關係型OLTP和嵌入式資料庫系統都有所列舉。因為數據工程學科涉及到處理應用程式和運營系統(BSS)中使用的許多不同的內部和外部存儲系統,即使它們不是分析堆棧的一部分。
  • 類別的名稱儘可能地通用,基於這些工具在數據堆棧中的位置來分門別類。對於存儲系統,主要的資料庫模型和資料庫工作負載(OLTP、OLAP)用於對存儲系統進行分組和標記,但是例如“分散式SQL DBMS”也被稱為HTAP或可擴展的SQL資料庫。
  • 一些工具可能屬於多個類別。例如,VoltDB既是記憶體資料庫又是分散式SQL DBMS。但是我儘量將它們放在市場上最常識別的類別中。
  • 對於某些資料庫系統,它們實際所屬的類別可能有些模糊。例如,ByConity聲稱自己是數據倉庫解決方案,但是它是建立在被認為是實時OLAP引擎的ClickHouse之上的。因此,目前還不清楚它是否是實時(能夠支持亞秒查詢)的OLAP系統。
  • 並非所有列出的項目都是完全可遷移的開源工具。其中一些項目更像是Open Core而不是開源。在開放核心模型中,不是所有組件都是由主要SaaS提供商提供的完整系統的開源。因此,在決定採用開源工具時,考慮項目有多具有可移植性和真正開源是很重要的。

工具類別概述

在接下來的部分中,我簡單討論下每個類別。

1. 存儲系統

存儲系統是這份生態系統全景圖中最大的類別,主要歸因於專門的資料庫系統近期以來激增。最新的兩個流行類別是矢量資料庫和流資料庫。Materialize和RaisingWave是開源流資料庫系統的示例。矢量資料庫在存儲系統領域也經歷了快速增長。我將矢量存儲系統放在ML平臺部分,因為它們主要用於ML和AI堆棧。分散式文件系統和對象存儲也有了它們自己的相關類別,即數據湖平臺。

如選擇標準部分所述,存儲系統根據主要的資料庫模型和工作負載進行分組和標記。在最高層面上,存儲系統可以分為三個主要類別:OLTP、OLAP和HTAP。它們可以根據SQL vs NoSQL(OLTP引擎)以及離線(非實時)vs 實時(亞秒結果)(OLAP引擎)進一步分類,如下圖所示。

file

2. 數據湖平臺

數據湖平臺在過去一年持續成熟化,Gartner把數據湖放在了其2023年版的數據管理炒作周期圖上。

file

對於存儲層,分散式文件系統對象存儲仍然是服務於本地和基於雲的數據湖實施的主要技術基石。儘管HDFS仍然是本地Hadoop集群的主流技術,但Apache Ozone分散式對象存儲正在迎頭趕上,為本地數據湖存儲技術提供了另一種選擇。主流商業Hadoop提供商Cloudera現在把Ozone作為其CDP私有雲產品的一部分。

數據序列化格式的選擇會影響存儲效率和處理性能。在Hadoop生態系統中,Apache ORC仍然是列存儲的首選,而Apache Parquet已經成為現代數據湖中數據序列化的事實標準。它之所以受歡迎,是因為它體積不大、高效壓縮以及與各種處理引擎的廣泛相容性。

2023年的另一個關鍵趨勢是存儲和計算層的解耦。許多存儲系統現在提供與基於雲的對象存儲解決方案(如S3)的集成,利用其固有的效率和彈性。這種方法允許數據處理資源獨立於存儲進行擴展,從而實現成本節省和增強可擴展性。Cockroachdb支持S3作為存儲後端,Confluent提供在S3上長期保留Kafka主題數據的服務,進一步說明瞭這一趨勢,突顯了數據湖作為經濟實惠、長期存儲解決方案的不斷增長的使用。

2023年最熱門的發展之一是開放表格格式的興起。這些框架實質上充當了一個表格抽象和虛擬數據管理層,位於你的數據湖存儲和數據層之上,如下圖所示。

file

當前,開放表格格式領域三足鼎立:

  • Apache Hudi:最初由Uber開發和開源,其主要設計目標是支持近實時數據更新和ACID事務。
  • Apache Iceberg:由Netflix的工程團隊發起。
  • Delta Lake:由Databricks創建和開源,與Databricks平臺無縫集成。

在這個賽道的領先SaaS提供商Databricks、Tabular和OneHouse,在2023年獲得的融資顯示出市場對這個領域的興趣,以及它們進一步推進數據湖上數據管理的潛力。

此外,現在正在出現一種新的趨勢,即統一的數據湖層的出現。OneTable(最近由OneHouse開源)和UniForm(目前是Databricks的非開源產品)是去年宣佈的兩個領先項目。這些工具超越了單個表格格式,提供了在一個單一框架下使用所有這三個主要競爭者的能力。這讓用戶能夠採用通用格式,同時以其首選格式向處理引擎暴露數據,從而提高了靈活性和敏捷性。

3. 數據集成

2023年的數據集成領域不僅繼續由Apache Nifi、Airbyte和Meltano等老牌玩家主導,還出現了一些有前景的工具,例如Apache InlongApache SeaTunnel,它們以其獨特的優勢提供的的替代方案引人註目。

與此同時,得益於Kafka生態系統的積極發展,流式CDC(變更數據捕獲)也進一步成熟。Kafka ConnectDebezium插件已經成為從資料庫系統中進行近實時數據捕獲的首選,而對於使用Flink作為主要流處理引擎的部署,Flink CDC連接器正在獲得越來越多的關註。

除了傳統的資料庫之外,諸如CloudQueryStreampipe之類的工具正在簡化對API的數據集成,為各種來源的數據提供了方便的解決方案,這反映了與雲服務靈活集成的重要性的增長。

在事件和消息中間件領域,雖然有挑戰者如Redpanda追趕,但Apache Kafka的地位無人撼動。Redpanda在2023年獲得了1億美元的C輪融資,表明資本對提供低延遲和高吞吐量的替代消息代理的興趣正在增長。

4. 數據處理與計算

流處理領域在2023年繼續升溫!Apache SparkApache Flink仍然是主導者,但Apache Flink在2023年吸引了一些嚴肅的關註。AWS和阿裡巴巴等雲巨頭推出了Flink-as-a-service產品,Confluent收購了Immerok並推出了自己的全托管Flink產品,可以看到這一強大引擎背後的動力。

在Python生態系統中,數據處理庫如Vaex、Dask、polars和Ray可用於利用多核處理器。這些並行執行庫進一步拓展了在熟悉的Python環境中分析大規模數據集的可能性。

5. 工作流管理與DataOps

工作流調度的生態可以說是整個生態系統中最豐富的類別,其中既有老牌巨頭也有令人興奮的新秀。

諸如Apache Airflow和Dagster之類的老牌工具仍然很受歡迎,儘管最近社區中關於工作流調度引擎的拆解、重新打包和打包與不打包的辯論異常激烈,但它們仍然是被廣泛採用的調度引擎。另一方面,在過去的兩年中,GitHub見證了幾個令人信服的新興工具的崛起,它們獲得了相當大的關註。Kestra、Temporal、Mage和Windmill都值得關註,它們各自有著獨特的優勢。無論是專註於無伺服器編排,如Temporal,還是分散式任務執行,如Mage,這些新秀都能滿足現代數據管道不斷發展的需求。

6. 數據基礎設施與監控

最近Grafana Labs的調查證實,Grafana、Prometheus和ELK仍然在可觀察性和監控領域占據主導地位。Grafana Labs本身一直非常活躍,推出了新的開源工具,如Loki(用於日誌聚合)和Mimir(用於長期的Prometheus存儲),進一步加強了平臺能力。

集群管理和監控方面,開源工具似乎就不那麼熱門了。這可能是因為雲遷移的趨勢減少了對管理大型本地數據平臺的需求。雖然Apache Ambari項目曾經因Hadoop集群管理火爆一時,但在2019年Hortonworks和Cloudera合併後幾乎被放棄,最近重新燃起的複蘇的小火苗又給它的未來帶來一絲希望。但是,它的命運是否長久仍然不確定。

至於資源調度和工作負載部署,Kubernetes似乎是首選的資源調度,特別是在基於雲的平臺上。

7. 機器學習平臺

機器學習平臺是最活躍的類別之一,其中矢量資料庫受到了前所未有的關註。這是一種針對高維數據存儲和檢索進行優化的專用系統。正如DB-Engines的2023年報告所強調的,矢量資料庫成為過去一年中最受歡迎的資料庫類別。

MLOps工具在高效擴展ML項目方面也發揮著越來越重要的作用,確保ML應用程式生命周期管理的順利運行。隨著ML部署的複雜性和規模不斷增長,MLOps工具已成為簡化ML模型開發、部署和監控的不可或缺的工具。

8. 元數據管理

近年來,元數據管理已經成為關註焦點,這是由於對數據進行管理和訪問的需求不斷增長。然而,缺乏全面的元數據管理平臺促使像Netflix、Lyft、Airbnb、Twitter、LinkedIn和Paypal等科技巨頭構建自己的解決方案。

這些努力為開源社區帶來了一些顯著的變化。像Amundsen(來自Lyft)、DataHub(來自LinkedIn)和Marquez(來自WeWork)這樣的工具是自主開發的解決方案,都已經開源並正在積極開發和貢獻。

至於架構管理,這個領域仍然有些停滯不前。Hive Metastore仍然是許多人的首選解決方案,因為目前沒有替代的開源解決方案來取代它。

9. 分析與可視化

在商業智能(BI)和可視化領域,Apache Superset是最活躍和受歡迎的開源替代方案,與許可的SaaS BI解決方案相比,它的表現更為出色。

對於分散式和大規模並行處理(MPP)引擎,一些專家認為大數據已經過時,大多數公司不需要大規模的分散式處理,而是選擇單個強大的伺服器來處理其數據量。

儘管有這種說法,但分散式大規模並行處理(MPP)引擎,如Apache Hive、Impala、Presto和Trino,在大型數據平臺中仍然非常普遍,特別是對於擁有PB級數據的情況。

除了傳統的MPP引擎之外,統一執行引擎是另一個獲得關註的趨勢。諸如Apache Linkis、Alluxio和Cube之類的引擎為上層應用程式和底層引擎之間提供了查詢和計算中間件。

file

結論

對開源數據工程生態系統的探索是我們對不斷變動而充滿活力的數據工程世界的一瞥。雖然這份全景圖中各個類別涵蓋了表現突出的工具和技術,但這個生態系統仍在迅速發展,不斷涌現新的解決方案。

註意,這不是一個詳盡的列表,而“最佳”的工具最終取決於你的具體需求和用例。如果我漏掉了任何值得註意的好工具,歡迎隨時分享給我。

本文由 白鯨開源 提供發佈支持!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄3.5 ICMPv6 報文和報文類型1. ICMPv6 報頭2. ICMPv6 報文類型 3.5 ICMPv6 報文和報文類型 1. ICMPv6 報頭 ICMPv6的報頭由 type(8bit)\ code(8bit)\ checksum(16bit) 和 可變數據組成,由於可變數據太多,這裡 ...
  • 一、配置環境 1、虛擬機管理器:WMware Workstation Pro 17.0 2、虛擬機:22.04.1Ubuntu 二、概述 TotallySAF is a code that estimates the cosmological parameters constraints using ...
  • 這篇文章旨在教大家如何配置arch中文和中文輸入法和對時間的調整 主要解決三點問題 1.顯示中文 2.使用中文輸入法 3.顯示正確的時間 目錄這篇文章旨在教大家如何配置arch中文和中文輸入法和對時間的調整第一步,就是把arch切換成中文第二步,就是如何使用中文輸入法時間問題解決 我arch版本是a ...
  • fdisk -l命令用於查看CentOS系統中所有硬碟及其分區的詳細信息。該命令的輸出會顯示硬碟的大小、分區表結構、分區類型以及每個分區的起始和結束扇區等信息。 ...
  • 一:ansible劇本 1:簡介 一系列ansible命令的集合,使用yaml語言進行編寫的,從上往下的執行,支持很多的特性,比如,將某個命令的狀態作為變數給其他的任務執行,變數,迴圈,判斷,錯誤糾正,可以是一個playbook或者是多個playbook執行 2:yaml基本語法 1、yaml約束 ...
  • 源碼分析丨MySQL的多層SP中Cursor相關BUG 一、問題發現 在一次開發中在sp中使用多層cursor的時候想知道每層的m_max_cursor_index值分別是多少,以用來做後續開發。於是做了以下的試驗,但是發現第一個level=2那層的m_max_cursor_index的值有點問題。 ...
  • 本文分享自華為雲社區《GaussDB DWS的SQL ON ANYWHERE技術解密》,作者:tooooooooooomy。 1. 前言 適用版本:【8.1.1(及以上)】 查詢分析是大數據要解決的核心問題之一,雖然大數據相關的處理引擎組件種類繁多,並提供了豐富的介面供用戶使用,但相對傳統資料庫用戶 ...
  • Apache DolphinScheduler已支持Apache SeaTunnel任務類型,本文介紹了SeaTunnel任務類型如何創建,任務參數,以及任務樣例。 一、Apache SeaTunnel SeaTunnel 任務類型,用於創建並執行 SeaTunnel 類型任務。worker 執行該 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...