一、晉升為Apache TLP(Top-Level Project)的大數據相關項目
- 1.1、Apache® DataSketches™ (20210203)
- 1.2、Apache® Gobblin™ (20210216) **
- 1.3、Apache® DolphinScheduler™ (20210408) **
- 1.4、Apache® Pinot™ (20210802)
- 1.5、Apache Hop (20220118) **
二、進入到 Apache 孵化器(incubator)的項目:
- 2.1、Apache Kyuubi
- 2.2、Apache SeaTunnel
四、2021 Apache 年度項目:
- 4.1、Apache Superset 最活躍(2021年度報告)**
1.1、Apache® DataSketches™ :高性能大數據流算法庫
Apache DataSketches 是一個用於可擴展近似算法的高性能大數據分析庫。該項目於2012年由雅虎發起,2015年開源,並於2019年3月進入Apache孵化器,2021年02月03日正式畢業成為 Apache 頂級項目。
在大數據分析中,經常會出現一些不能伸縮的查詢問題,因為它們需要大量的計算資源和時間來生成精確的結果。包括 count distinct、分位數(quantiles)、最頻繁項(most-frequent items)、joins、矩陣計算(matrix computations)和圖分析(graph analysis)。
如果近似結果是可以接受的,那么有一類專門的算法,稱為流算法(streaming algorithms),或 sketches,可以更快地產生結果,並具有數學證明的誤差界限。對於交互式查詢,可能沒有其他可行的替代方案,而在實時分析的情況下,sketches 是唯一已知的解決方案。
對於任何需要從大數據中提取有用信息的系統,這些 sketches 都是必需的工具包,應該緊密地集成到它們的分析功能中。這項技術幫助雅虎成功地將其內部平台上的數據處理時間從數天或數小時減少到數分鍾或數秒。Apache DataSketches 具有以下特點:
- 非常快:產生近似結果的速度比傳統方法快幾個數量級——用戶可配置的大小與精度的權衡;
- 高效:sketch 算法可以在同一個進程處理實時和批數據;
- 針對處理大數據的計算環境進行優化,如 Apache Hadoop、Apache Spark、Apache Druid、Apache Hive、Apache Pig、PostgreSQL等;
- 兼容多種語言和平台:Java, C++ 和 Python;
1.2、Apache® Gobblin™:開源分布式大數據集成框架
Apache Gobblin 是一個用於流數據和批處理數據生態系統的分布式大數據集成框架。可以簡化大數據集成里面的常見問題,比如數據攝取、復制、組織以及生命周期管理等。
該項目2014年起源於 LinkedIn,2015年開源,2017年2月進入 Apache 孵化器,2021年02月16日正式畢業成為 Apache 頂級項目。
多年來,LinkedIn 的數據基礎架構團隊構建了自定義的數據攝取解決方案,用於將不同的數據引入到 Hadoop 生態系統。最終,LinkedIn 運行了 15 種類型的攝取管道,這給數據質量、元數據管理、開發和操作帶來了重大挑戰。
上面這個問題促使 LinkedIn 構建了 Gobblin。Gobblin 是一種通用數據攝取框架,用於從各種數據源(例如數據庫、REST API、FTP/SFTP 服務器、文件管理器等)中提取、轉換和加載大量數據到 Hadoop。
Gobblin 處理所有數據攝取 ETL 所需的常見例行任務,包括作業/任務調度、任務分區、錯誤處理、狀態管理、數據質量檢查、數據發布等。Gobblin 在同一執行框架中攝取來自不同數據源的數據,並在同一個地方管理不同來源的元數據。結合其他特性,例如自動擴展、容錯性、數據質量保證、可擴展性和處理數據模型演化的能力,使 Gobblin 成為一個易於使用、自我服務且高效的數據攝取框架。
1.3、Apache® DolphinScheduler™:開源分布式大數據可視化工作流調度系統
Apache DolphinScheduler是一個分布式去中心化,易擴展的可視化DAG工作流任務調度平台。致力於解決數據處理流程中錯綜復雜的依賴關系,使調度系統在數據處理流程中開箱即用。
該項目最初於 2017 年 12 月在易觀創建,並於 2019 年 8 月進入 Apache 孵化器,2021年04月08日正式畢業成為 Apache 頂級項目。
Apache DolphinScheduler 以 DAG 流式的方式將 Task 組裝起來,可實時監控任務的運行狀態,同時支持重試、從指定節點恢復失敗、暫停及 Kill 任務等操作。其主要有以下幾個特點:
- 高可靠性:去中心化的多 Master 和多 Worker 服務對等架構, 避免單 Master 壓力過大,另外采用任務緩沖隊列來避免過載
- 簡單易用:DAG 監控界面,所有流程定義都是可視化,通過拖拽任務完成定制 DAG,通過 API 方式與第三方系統集成, 一鍵部署
- 豐富的使用場景:支持多租戶,支持暫停恢復操作. 緊密貼合大數據生態,提供 Spark, Hive, M/R, Python, Sub_process, Shell 等近20種任務類型
- 高擴展性:支持自定義任務類型,調度器使用分布式調度,調度能力隨集群線性增長,Master 和 Worker 支持動態上下線
1.4、Apache® Pinot™:開源分布式實時大數據分析基礎設施
Apache Pinot 是一個分布式實時分布式 OLAP 數據存儲,旨在以高吞吐量和低延遲提供可擴展的實時分析。
該項目最初於 2013 年由 LinkedIn 創建,2015 年開源,於 2018 年 10 月進入 Apache 孵化器,2021年08月02日正式畢業成為 Apache 頂級項目。
Apache Pinot 可以直接從流數據源(例如 Apache Kafka 和 Amazon Kinesis)中提取,並使事件可用於即時查詢。它還可以從批處理數據源(例如 Hadoop HDFS、Amazon S3、Azure ADLS 和 Google Cloud Storage)中提取。
該系統的核心是列式存儲,具有多種智能索引和預聚合技術以實現低延遲。這使得 Pinot 最適合面向用戶的實時分析。同時,Pinot 也是其他分析用例的絕佳選擇,例如內部儀表板、異常檢測和臨時數據探索。
Apache Pinot 主要有以下特點:
- 面向列的數據庫:具有各種壓縮方案,如 Run Length,Fixed Bit Length;
- 可插拔索引技術:支持排序索引(Sorted Index),位圖索引(Bitmap Index),倒排索引(Inverted Index,),StarTree 索引,Bloom 過濾器,范圍索引(Range Index),文本搜索索引(Lucence/FST), Json 索引,地理空間索引(Geospatial Index );
- 具有基於查詢和 segment 元數據優化查詢/執行計划的能力;
- 支持從 Kafka、Kinesis 等流系統近實時的攝取數據,也支持從 Hadoop、S3、Azure、GCS 等批處理系統攝取數據;
- 類似 sql 的查詢語言,支持對數據進行選擇、聚合、過濾、分組、排序和 distinct 查詢;
- 支持多值字段
- 支持水平擴展和容錯
Pinot 是 LinkedIn 和 Uber 的工程師共同設計的,可以根據集群中的節點數量來擴展查詢性能。隨着添加更多節點,查詢性能總是會根據期望的每秒查詢量配額提高。為了在不降低性能的情況下實現無限數量節點和數據存儲的水平可伸縮性,Pinot 遵守以下設計原則:
- 高可用性:構建 Pinot 是為了為客戶應用程序提供低延遲的分析查詢。根據設計,Pinot 沒有單點故障。當節點故障時,系統繼續提供查詢服務。
- 水平可伸縮:在工作負載發生變化時通過添加新節點進行伸縮的能力;
- 延遲 vs 存儲:構建 Pinot 是為了在高吞吐量的情況下提供低延遲。為此,開發了段分配策略(segment assignment strategy)、路由策略、星樹索引(star-tree indexing)等特性來實現這個功能。
- 不可變數據:Pinot 假設所有存儲的數據都是不可變的。對於 GDPR 遵從性,我們提供了一個附加解決方案來清除數據,同時提供性能保證;
- 動態配置更改:必須在不影響查詢可用性或性能的情況下執行添加新表、擴展集群、攝取數據、修改索引配置和重新平衡等操作。
1.5、Apache Hop 起源於 Kettle 的新一代數據集成平台
Apache Hop(Hop Orchestration Platform 的首字母縮寫)是一種數據編排(data orchestration )和數據工程平台(data engineering platform),旨在促進數據和元數據編制。Hop 可以讓我們專注於問題的解決,而不受技術的阻礙。該項目起源於 Kettle,經過數年的重構,並於2020年9月進入 Apache 孵化器;2022年1月18日正式成為 Apache 頂級項目。
Hop 允許數據專業人員以可視化的方式工作,使用元數據來描述應如何處理數據。可視化設計使數據開發人員能夠專注於他們想要做的事情,而不是需要如何完成該任務。這種對手頭任務的關注讓 Hop 開發人員比編寫代碼時更有效率。Hop 的目標是成為數據集成的未來,我們只需要對手頭上的任務進行一次設計,然后通過 Apache Hop 在任何地方運行,比如 Hop 本地引擎、Spark、Flink、Google Dataflow 或 AWS EMR等。
Hop 被設計的盡可能靈活:其核心是小巧但功能強大的 Hop 引擎。所有的功能都是通過插件添加的:默認的 Hop 安裝帶有大約 400 個插件。我們可以根據需要刪除或添加第三方插件,以定制 Hop,使其完全符合我們的需要。
Hop 設計用於任何場景,從物聯網到海量數據、本地、雲端、裸操作系統或容器和 kubernetes。
Hop 的使用場景主要有以下幾個方面:
- 利用雲、集群和大規模並行處理環境,將大型數據集加載到數據庫中;
- 數據倉庫構建並支持漸變維度 (SCD, Slowly Changing Dimensions)、變更數據捕獲 (CDC,Change Data Capture) 和代理鍵創建;
- 不同數據架構之間的集成,結合關系型數據庫、文件、NoSQL 數據庫(如 Neo4j、MongoDB、Cassandra等)
- 不同數據庫和應用程序之間的數據遷移;
- 數據分析和數據清理。
Apache Hop 和 Kettle 聯系和區別:
-
Kettle 最早是一個開源的 ETL 工具,作為一個端對端的數據集成平台,可以對多種數據源進行抽取(Extraction)、加載(Loading)、數據落湖(Data Lake Injection)、對數據進行各種清洗(Cleasing)、轉換(Transformation)、混合(Blending)。
-
支持無代碼拖拽式構建數據管道、多種數據源以及和 Hadoop 深度集成。在國內外的很多行業有着廣泛的使用。不過近幾年 Kettle 的發展比較緩慢,為了改變現狀,2019年基於 Kettle 的一個分支建立 Hop 項目。
由於 Apache Hop 是從 Kettle 發展過來的,所以兩者之間在概念上基本上可以找到對應的名稱,比如 Kettle 里面轉換在 Hop 里面稱為管道(Pipeline):
Apache Hop 和 Kettle 功能的對比如下所示:
從上表可以看到,Hop 相比於 Kettle 比較完善。比如 Hop 支持項目和生命周期配置、支持在項目和配置中搜索信息、通過 UI 和命令行進行配置管理。另外,Hop 和 Apache Beam 有比較深的集成,所以其支持可插拔的運行時引擎,比如可以將 Pipelines 通過 Apache Beam 發到 Apache Spark 、Apache Flink 、Dataflow 等引擎里面計算。
2.1、Apache kyuubi:分布式多租戶的 Thrift JDBC/ODBC 服務器
Apache Kyuubi 是一個分布式多租戶的 Thrift JDBC/ODBC 服務器,用於大規模數據管理、處理和分析,其構建在 Apache Spark 之上,並且設計支持更多的引擎(比如 Apache Flink)。由網易在2018年開源,並於2021年06月21日進入 Apache 孵化器。
Kyuubi 主要應用在大數據領域場景,包括大數據離線計算、數據倉庫、Ad Hoc等方向。Kyuubi 提供了以下幾個功能:
- 多租戶:Kyuubi 支持端到端的多租戶,這就是為什么盡管已經存 在Spark Thrift JDBC/ODBC 服務器,網易還是要創建這個項目。
- 簡單易用:您只需熟悉 SQL 和JDBC 即可處理海量數據,Kyuubi 幫助您專注於業務系統的設計和實現。
- 到處運行:Kyuubi 可以向所有支持的集群管理器提交 Spark 應用程序,包括 YARN、Mesos、Kubernetes、Standalone 和 local。
- 安全和認證:通過強大的身份驗證和細粒度的列/行級授權,Kyuubi 可以確保系統和數據的安全。
- 高可用:是企業級SQL引擎的基本特性。Spark Thrift Server不具備這種能力;而Kyuubi提供了基於ZooKeeper的高可用解決方案,以支持高可用特性;
2.2、Apache SeaTunnel:高性能、分布式、海量數據集成框架
Apache SeaTunnel (原名 Waterdrop)是一個非常易於使用的超高性能分布式數據集成平台,支持實時流式和離線批處理的海量數據處理,架構於 Apache Spark 和 Apache Flink 之上。由 Interesting Lab 於 2018年開源,並於2021年12月09日進入 Apache 孵化器。
通過 Apache SeaTunnel 可以讓 Spark 的使用更簡單、更高效,並鞏固了行業的高質量經驗,並將業界和 Interesting Lab 使用 Spark 的優質經驗固化到SeaTunnel 這個產品中,明顯減少學習成本,加快分布式數據處理能力在生產環境落地。Databricks 開源的 Apache Spark 對於分布式數據處理來說是一個偉大的進步。Interesting Lab 在使用 Spark 時發現了很多可圈可點之處。除了大大簡化分布式數據處理難度外,seatunnel 盡所能為您解決可能遇到的問題:
- 數據丟失與重復
- 任務堆積與延遲
- 吞吐量低
- 應用到生產環境周期長
- 缺少應用運行狀態監控
Apache SeaTunnel 的特性:
- 簡單易用,靈活配置,無需開發
- 實時流式處理
- 高性能
- 海量數據處理能力
- 模塊化和插件化,易於擴展
- 支持利用SQL做數據處理和聚合
- Spark Structured Streaming
- 支持Spark 2.x
3.1、apache Ambari 正式退役 (https://attic.apache.org/projects/ambari.html)
2022 年初,Apache Ambari 於 2022-01 悄然宣布,項目不再維護,正式進入退役階段!
Ambari 回顧:
- Apache Ambari 提供了一系列工具軟件,輔助集群管理員,進行集群搭建/集群管理/集群監控,從而使得大數據集群的運維管理更簡單易捷;
- 除了提供基於瀏覽器的 WEB-UI 方便運維人員對集群進行運維管理外,Ambari 也提供了一系列 REST APIs, 方便應用開發人員與系統集成人員,將集群搭建/集群管理/集群監控功能,提成到應用系統中;
- Apache Ambari 創建於 2013-11,其最新版本,也是最后一個版本,是 Ambari 2.7.6,發布於 2021-11月;
“項目退役”的含義:
- 項目中正在使用的開源組件退役后,用戶仍然可以正常獲取該組件的源碼包和二進制包,仍然可以正常使用,幾乎不受影響;對於代碼能力比較強有二次開發能力的大公司,很多都會基於開源版本fork自己的新分支並維護在自己的代碼庫中,其影響更是有限。
- 已經退役的開源組件,Apache 官方不會再維護該項目,也就是說不會出新版本和新特性,對后續陸續發現的BUG也不會出修復版本,所以雖然該組件仍可以正常使用,但由於不能復用其背后開源社區的力量,所以長期來講,一般都會重新進行技術選型,尋找替代品,在新產品新項目中切換使用新組件,在舊產品舊項目中逐步淘汰替換舊組件。
Ambari 往昔:
- 2015 年初,大數據三駕馬車(Cloudera,Hortonworks,MapR)正值春風得意,Ambari 作為市面上唯一的開源的大數據集群管理系統,其開源社區相當活躍,市面上的應用者也很多,很多公司都基於開源的 Ambari 進行二次開發構建自己的大數據平台,Hortonworks 更是將 Ambari 作為其大數據平台 HDP (Hortonworks Data Platform) 內置的大數據集群管理系統,其市場占用率不可謂不高!
六七年時間,Ambari 就從當初的鼎盛時期,走到了今天退役的境地!這背后的原因:
- IT 市場大環境變化的影響:隨着IT 生態大環境的變化,尤其是雲計算的突起,市場競爭愈加激烈,Cloudera 不得不改變市場策略,於2019年1月與 Hortonworks 進行了合並;另一駕馬車MapR,也被筆者曾經的東家 HPE 於2019年8月收購;
- 有科技大公司產品策略調整的直接影響:Cloudera 與 Hortonworks 合並后,逐步摒棄了 HDP 與 CDH 大數據平台,推出了 CDP 大數據平台;並在底層的大數據集群管理系統上,摒棄了 Ambari,主推原 CDH 底層的 Cloudera Manager;
- 更有開源社區宣傳和運營的問題:Ambari作為一款優秀的開源大數據管理系統,時至今日,仍有不少公司的大數據平台是基於其開源版本二開構建的,正所謂酒香也怕巷子深,如果 Ambari 社區有着良好的宣傳和運營,如果基於 Ambari 二開的公司能更主動地秉承開源精神回饋社區,相信即使 Cloudera 做了了上述調整,Ambari項目也不至於退役。
3.2、apache Sentry 正式退休(https://attic.apache.org/projects/sentry.html)
Apache Sentry是Cloudera公司發布的一個Hadoop開源組件,2016年3月從Incubator畢業,成為Apache頂級項目。2020年2月退休。在上一節講過,用 ranger 替代(CDP中內置的就是 ranger 而不再是 sentry)
3.3、apache Sqoop 正式退休 (https://attic.apache.org/projects/sqoop.html)
Sqoop 在大數據集群 HADOOP 和關系型數據庫 RDBMS 之間,提供了高效的大批量數據同步功能(Bulk Data Transfer) ,sqoop 於 2021-06正式退役。可以考慮使用 datax/sparksql/kafka-connect/seatunnel/flink-cdc 等替代;
4.1、Apache Superset - 最活躍
日前,Apache 官方博客發布了2021年度報告,從社區、項目動態、和代碼提交情況等方面進行了統計。按提交次數排名的話,Apache Superset 可謂是 2021 年的年度項目,它也是唯一一個提交超過 10000 次的單個項目,並且在 GitHub 上吸引了近 43000 顆星(以及 8400 個 fork)。
參考資料