替代Hadoop作為資料湖的新的開源專案 - unpocodejava

banq發表於2022-01-03

資料湖 通常與面向 Hadoop 的物件儲存相關聯。在這種情況下,組織的資料首先上傳到 Hadoop 平臺,然後對駐留在 Hadoop 叢集節點上的資料應用資料探勘和分析工具。

我們發現 Hadoop 的核心是它的儲存層HDFS(Hadoop 分散式檔案系統),它可以跨多個伺服器儲存和複製資料,此外,Hadoop 生態系統還包括一些輔助工具,例如 Hive、Flume、Sqoop 和 Kafka,它們有助於包括資料攝取、準備和提取。

Hadoop 資料湖可以使用 Cloudera、Azure HDInsight 或 GCP DataProc 等企業平臺在本地或雲中安裝。

 

Hadoop 資料湖的優勢

即使在今天,由於以下原因,在 Hadoop 上安裝資料湖仍然是一種流行的選擇:

  • 技術團隊之間更加熟悉
  • 開源解決方案,使其實施經濟
  • 更便宜,因為它們是開源的
  • 許多可用於 Hadoop 整合的工具
  • 易於擴充套件
  • 資料區域性性可實現更快的計算
  • 可以將其安裝在本地或作為各種雲中的服務

 

今天的 Hadoop

Hadoop 曾經是資料湖的主要選擇,但在不斷變化的技術世界中,還有其他更現代的方法基於 Spark 或 Presto 等工具。

讓我們回顧一下,瞭解事情發生了怎樣的變化。Hadoop出現在2000年代初,十年間開始流行,其實是因為很多公司走開源,當時早期的BigData和Data Lakes專案大部分都是基於Hadoop的。

Hadoop 提供了兩個主要功能:

  • 用於持久化資料的分散式檔案系統 (HDFS)。
  • 允許並行處理所有資料的處理框架。

越來越多的組織開始希望使用他們的所有資料,而不僅僅是一些資料。因此,Hadoop 因其儲存和處理新資料來源(包括日誌記錄、點選流以及機器和感測器生成的資料)的能力而廣受歡迎。

在 2000 年代,Hadoop 很有意義,因為它允許您使用基本硬體構建本地叢集,以低成本儲存和處理這些新資料。

但開源繼續發展,出現了一個新框架:Apache Spark,經過優化以處理記憶體中而不是磁碟上的資料。這當然意味著在 Spark 上執行的演算法會更快,但資料仍然需要持久化,因此 Spark 被包含在許多 Hadoop 發行版中。那行得通,但隨著雲的興起,有一種更好的資料持久化方法:物件儲存。

除此之外,隨著 Cloudera 購買 Hortonworks(以及 HP 購買 MapR),本質上我們可以說 Hadoop 不再有免費發行版,這意味著開源世界正在尋找替代解決方案。

MinIO 和 Presto 作為資料湖

我們提到它目前可以掛載在 Spark 和物件儲存庫之上。在這一點上,我們將描述一個有趣的替代方案,以替代基於 HDFS 的環境以及基於 MinIO 和 Presto 的 Hadoop 生態系統的其餘部分。

 

它是實現 AWS S3 API 的分散式物件儲存。MinIO 可以部署在本地和雲端,並在 Kubernetes 之上工作。

MinIO 的儲存基於物件,其中每個物件由 3 個概念組成:

  • 資料本身。資料可以是您想要儲存的任何內容,從照片到 400,000 頁的手冊
  • 可擴充套件數量的後設資料。後設資料由建立物件的人定義;它們包含有關資料是什麼、應該用於什麼、其機密性或與資料應該如何使用相關的任何其他內容的上下文資訊。
  • 全域性唯一識別符號。識別符號是提供給物件的地址,以便它可以在分散式系統中找到。通過這種方式,無需知道其物理位置(可能存在於資料中心的不同部分或世界的不同部分)即可找到資料。

如果 MinIO 可以代替 HDFS 作為資料湖中的儲存,我們就缺少一個 HIVE 風格的 SQL 查詢引擎。

  • Presto 

是一個用 Java 構建的開源分散式 SQL 查詢引擎,旨在針對大量資料來源(通過聯結器)啟動互動式分析查詢,支援對從千兆位元組到 PB 級資料來源的查詢。

Presto 是一個 ANSI-SQL 查詢引擎,它允許使用相同的 SQL 語句、函式和運算子在任何連線的資料來源中查詢和運算元據。

因此,在資料湖中,我們可以使用 Presto 查詢儲存在 MinIO 中的資料。 

此外,Presto 可以在 Spark 之上執行,讓您可以利用 Spark 作為 Presto 查詢的執行環境。

與在 Hadoop 上安裝資料湖相比,這種方法具有許多優點:

  • 這種組合比典型的 Hadoop 配置更具彈性,而在 Hadoop 中,向 Hadoop 叢集新增和刪除節點是一個完整的過程,在這種方法中,一切都執行在 Kubernetes 之上,這使我們能夠輕鬆擴充套件。
  • 單獨的計算和儲存:使用 Hadoop,如果您想新增更多儲存,您可以通過新增更多節點(使用計算)來實現。如果您需要更多儲存,無論您是否需要,您都將擁有更多計算,而使用物件儲存架構,如果您需要更多計算,您可以將節點新增到 Presto 叢集並保留儲存,以便計算和儲存不僅具有彈性,而且它們獨立地具有彈性。
  • 維護:維護一個穩定可靠的 Hadoop 叢集是一項複雜的任務,例如更新叢集通常涉及停止叢集,持續更新很複雜,...
  • 降低成本:通過這種架構,我們將降低總擁有成本:因為 MinIO 幾乎不需要管理,而且物件的儲存更便宜。

 

相關文章