盤點2020年晉升為Apache TLP的大資料相關專案(軟體開發)

盤點2020年晉升為Apache TLP的大資料相關專案(軟體開發)

在過去一年有很多 Apache 孵化專案順利畢業成頂級專案(Top-Level Project ,簡稱 TLP ),在這裡我將給大家盤點 2020 年晉升為 Apache TLP 的大資料相關專案。在2020年一共有四個大資料相關專案順利畢業成頂級專案,主要是 Apache® ShardingSphere™、Apache® Hudi™、Apache® Iceberg™ 以及 Apache® IoTDB™,這裡以畢業的時間順序依次介紹。

關於過去幾年畢業成 TLP 的大資料專案可以參見《盤點2017年晉升為Apache TLP的大資料相關專案》、《盤點2018年晉升為Apache TLP的大資料相關專案》 以及 《盤點2019年晉升為Apache TLP的大資料相關專案》。

Apache ShardingSphere 是一套開源的分散式資料庫中介軟體解決方案組成的生態圈,它由 JDBC、Proxy 和 Sidecar(規劃中)這三款相互獨立,卻又能夠混合部署配合使用的產品組成。它們均提供標準化的資料分片、分散式事務和資料庫治理功能,可適用於如 Java 同構、異構語言、雲原生等各種多樣化的應用場景。其架構如下:

盤點2020年晉升為Apache TLP的大資料相關專案(軟體開發)

Apache ShardingSphere 定位為關係型資料庫中介軟體,旨在充分合理地在分散式的場景下利用關係型資料庫的計算和儲存能力,而並非實現一個全新的關係型資料庫。它透過關注不變,進而抓住事物本質。關係型資料庫當今依然佔有巨大市場,是各個公司核心業務的基石,未來也難於撼動,我們目前階段更加關注在原有基礎上的增量,而非顛覆。

Apache ShardingSphere 是由京東主導,多個公司共同貢獻的專案。它是京東集團首個進入 Apache 基金會的開源專案,也是 Apache 基金會首個分散式資料庫中介軟體專案。該專案於2018年11月進入 Apache 孵化器,並已於2020年4月16日成為 Apache 軟體基金會的頂級專案[1]。關於 Apache ShardingSphere 更多資料可以參見官方網站:https://shardingsphere。apache。org/。

Apache Iceberg 最初由 Netflix 設計開發,主要為了解決列出大量的分割槽耗時以及元資料和 HDFS 資料不一致等問題設計的輕量級資料湖解決方案。是一種用於跟蹤超大規模表的新格式,是專門為物件儲存(如S3)而設計的,其核心思想是在時間軸上跟蹤表的所有變化。Iceberg 中有個比較重要的概念就是快照(snapshot),快照表示表資料檔案的一個完整集合,每次更新操作會生成一個新的快照。

Apache Iceberg 主要有以下幾個特點:

最佳化資料入庫流程:Iceberg 提供 ACID 事務能力,上游資料寫入即可見,不影響當前資料處理任務,這大大簡化了 ETL;Iceberg 提供了 upsert、merge into 能力,可以極大地縮小資料入庫延遲;

支援更多的分析引擎:優秀的核心抽象使之不繫結特定的計算引擎,目前 Iceberg 支援的計算引擎有 Spark、Flink、Presto 以及 Hive。

統一資料儲存和靈活的檔案組織:提供了基於流式的增量計算模型和基於批處理的全量表計算模型。批處理和流任務可以使用相同的儲存模型,資料不再孤立;Iceberg 支援隱藏分割槽和分割槽進化,方便業務進行資料分割槽策略更新。支援 Parquet、Avro 以及 ORC 等儲存格式。

增量讀取處理能力:Iceberg 支援透過流式方式讀取增量資料,支援 Structed Streaming 以及 Flink table Source。

Apache Iceberg 於2018年11月16日進入 Apache 孵化器,並於2020年05月20日成功畢業成 Apache 頂級專案。比較奇怪的是,並沒有看到 Apache 官方宣佈其成為頂級專案,本文主要參考:https://incubator。apache。org/projects/iceberg。html 以及 https://incubator。apache。org/projects/iceberg。html。

關於 Apache Iceberg 的更詳細資訊可以參見其官方網站:https://iceberg。apache。org/

Apache Hudi (Hadoop Upsert Delete and Incremental) 是 Uber 為了解決大資料生態系統中需要插入更新及增量消費原語的攝取管道和 ETL 管道的低效問題。它是一種分析和掃描最佳化的資料儲存抽象,可在幾分鐘之內將變更應用於 HDFS 中的資料集中,並支援多個增量處理系統處理資料。透過自定義的 InputFormat 與當前 Hadoop 生態系統(包括 Apache Hive、Apache Parquet、Presto 和 Apache Spark)整合,使得該框架對終端使用者來說是無縫的。

Hudi 的設計目標就是為了快速增量更新 HDFS 上的資料集,它提供了兩種更新資料的方式:Copy On Write 和 Merge On Read。Copy On Write 模式就是我們更新資料的時候需要透過索引獲取更新的資料所涉及的檔案,然後把這些資料讀出來和更新的資料進行合併,這種模式更新資料比較簡單,但是當更新涉及到的資料比較大時,效率非常低;而 Merge On Read 就是將更新寫到單獨的新檔案裡面,然後我們可以選擇同步或非同步將更新的資料和原來的資料進行合併(可以稱為 combination),因為更新的時候只寫新的檔案,所以這種模式更新的速度會比較快。

有了 Hudi 之後,我們可以實時採集 MySQL、HBase、Cassandra 裡面的增量資料然後寫到 Hudi 中,然後 Presto、Spark、Hive 可以很快地讀取到這些增量更新的資料,如下:

盤點2020年晉升為Apache TLP的大資料相關專案(軟體開發)

Apache Hudi 專案在2016年開始開發,當時在 Uber 的內部代號為 Hoodie,其於2017年開源,2019年1月進入 Apache 孵化器,2020年6月4日正式成為頂級專案[2]。

更多關於 Apache Hudi 的介紹可以參見過往記憶大資料的 《Apache Hudi: Uber 開源的大資料增量處理框架》 以及 《Uber 大資料平臺的演進(2014~2019)》的介紹,以及 Apache Hudi 的官方文件:http://hudi。apache。org/

Apache IoTDB(物聯網資料庫)是一體化收集、儲存、管理與分析物聯網時序資料的軟體系統。Apache IoTDB 採用輕量式架構,具有高效能和豐富的功能,並與 Apache Hadoop、Spark 和 Flink 等進行了深度整合,可以滿足工業物聯網領域的海量資料儲存、高速資料讀取和複雜資料分析需求。

Apache IoTDB 套件由若干個元件構成,共同形成“資料收集-資料寫入-資料儲存-資料查詢-資料視覺化-資料分析”等一系列功能。其架構如下:

盤點2020年晉升為Apache TLP的大資料相關專案(軟體開發)

使用者可以透過 JDBC 將來自裝置上感測器採集的時序資料、伺服器負載和 CPU 記憶體等系統狀態資料、訊息佇列中的時序資料、應用程式的時序資料或者其他資料庫中的時序資料匯入到本地或者遠端的 IoTDB 中。使用者還可以將上述資料直接寫成本地(或位於 HDFS上)的 TsFile 檔案。可以將 TsFile 檔案寫入到 HDFS 上,進而實現在 Hadoop 或 Spark 的資料處理平臺上的諸如異常檢測、機器學習等資料處理任務。對於寫入到 HDFS 或者本地的 TsFile 檔案,可以利用 TsFile-Hadoop 或 TsFile-Spark 聯結器允許Hadoop或Spark進行資料處理。對於分析的結果,可以寫回成 TsFile 檔案。IoTDB 和 TsFile 還提供了相應的客戶端工具,滿足使用者檢視和寫入資料的 SQL 形式、指令碼形式和圖形化形式等多種需求。

Apache IoTDB 是清華大學自研的時間序列資料庫,其於2014年專案啟動,2018年11月18日正式進入 Apache 孵化器,是中國高校首個進入 Apache 孵化器的專案,2020年9月23日正式畢業成為 Apache 頂級專案[3]。

[1] 2020年4月16日成為 Apache 軟體基金會的頂級專案: https://blogs。apache。org/foundation/entry/the-apache-software-foundation-announces60[2] 2020年6月4日正式成為頂級專案: https://blogs。apache。org/foundation/entry/the-apache-software-foundation-announces64[3] 2020年9月23日正式畢業成為 Apache 頂級專案: https://blogs。apache。org/foundation/entry/the-apache-software-foundation-announces68

關注我(安徽木子林科技),瞭解更多軟體開發小知識,歡迎評論區留下您寶貴意見!

盤點2020年晉升為Apache TLP的大資料相關專案(軟體開發)

安徽木子林科技有限公司政務黨建系統軟體著作權證書