Hadoop 中的 Hive 是什麼? 歷史及其組成部分

已發表: 2021-10-07

Apache Hive 是一個構建在 Hadoop 之上的開源倉儲系統。 Hive 用於查詢和分析存儲在 Hadoop 中的海量數據集。 它通過處理結構化和半結構化數據來工作。

通過這篇文章,讓我們詳細談談 Hadoop 中的 Hive、它的歷史、它的重要性、Hive 架構、一些關鍵特性、一些限制等等!

目錄

什麼是蜂巢?

Apache Hive 只是一個以 Hadoop 為基礎構建的數據倉庫軟件。 在 Apache Hive 之前,大數據工程師必須編寫複雜的 map-reduce 作業來執行查詢任務。 另一方面,有了 Hive,事情就大大減少了,因為工程師現在只需要了解 SQL。

Hive 使用一種稱為 HiveQL(類似於 SQL)的語言,使具有 SQL 工作知識的工程師更容易。 HiveQL 自動將您的 SQL 查詢轉換為 Hadoop 可以執行的 map-reduce 作業。

在此過程中,Apache 將抽象概念引入到 Hadoop 的工作中,並允許數據專家處理複雜的數據集,而無需學習使用 Hive 的 Java 編程語言。 Apache Hive 在您的工作站上運行,並將 SQL 查詢轉換為要在 Hadoop 集群上執行的 map-reduce 作業。 Hive 將所有數據分類到表中,從而為 HDFS 中存在的所有數據提供結構。

Apache Hive 的歷史

數據基礎架構團隊在 Facebook 推出了 Apache Hive。 它是 Facebook 上積極用於多種內部目的的技術之一。 多年來,Apache Hive 在集群上運行了數千個作業,擁有數百名用戶,用於一系列應用程序。

Facebook 的 Hive-Hadoop 集群存儲了超過 3PB 的原始數據。 它每天可以實時加載 15TB 的數據。 從那裡開始,Apache Hive 在其用例中發展得更多,如今,它被 IBM、雅虎、亞馬遜、FINRA、Netflix 等巨頭使用。

從世界頂級大學在線獲取您的數據科學認證獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

為什麼需要 Apache Hive?

在提出 Apache Hive 之前,Facebook 一直在努力應對許多挑戰,例如要分析的數據量不斷增加,以及這個大型數據集的完全不一致。 這些挑戰使 Facebook 難以無縫處理其數據密集型任務。 傳統的基於 RDBMS 的結構不足以控制不斷增加的壓力。

Facebook 首先引入了 map-reduce 來克服這些挑戰,但隨後通過提供適用於 HiveQL 的 Apache Hive 進一步簡化了它。

最終,Apache Hive 成為了急需的救星,幫助 Facebook 克服了各種挑戰。 現在,使用 Apache Hive,Facebook 能夠實現以下目標:

  • 模式的演變和靈活性。
  • 表的分區和分桶。
  • 直接在 HDFS 中定義 Hive 表。
  • ODBC/JDBC 驅動程序的可用性。

總而言之,Apache Hive 幫助開發人員節省了大量時間,否則這些時間將用於編寫複雜的 map-reduce 作業。 Hive 簡化了數據的匯總、分析、查詢和探索。

Apache Hive 僅依賴於 SQL,是一個快速且可擴展的框架,並且具有高度可擴展性。 如果您了解使用 SQL 進行基本查詢,您將能夠立即使用 Apache Hive! 它還提供對 HBase 和 HDFS 等不同數據存儲的文件訪問。

Apache Hive 的架構

既然您了解了 Apache Hive 的重要性和出現,那麼我們來看看 Apache Hive 的主要組件。 Apache Hive 的架構包括:

1.元存儲

這用於存儲每個表的元數據。 元數據通常由位置和模式組成。 Metastore 還包含分區元數據,可幫助工程師跟踪已分佈在集群上的不同數據集的進度。 此處存儲的數據採用傳統的 RDBMS 格式。

2. 司機

Apache Hive 中的驅動程序就像一個控制器,負責接收 HiveQL 語句。 然後,它通過創建不同的會話開始執行這些語句。 驅動程序還負責監視和管理實施的生命週期及其沿途的進展。 驅動程序包含執行 HiveQL 語句時生成的所有重要元數據。 它還充當 map-reduce 操作後獲得的數據的收集點。

3. 編譯器

編譯器用於編譯 HiveQL 查詢。 它將用戶生成的查詢轉換為一個萬無一失的執行計劃,其中包含所有需要執行的任務。 該計劃還包括遵循 map-reduce 以獲得所需輸出所需的所有步驟和過程。 Hive 編譯器將用戶輸入查詢轉換為 AST(抽象語法樹)以檢查編譯時錯誤或兼容性問題。 當沒有遇到任何問題時,AST 將轉換為有向無環圖 (DAG)。

4.優化器

優化器對執行計劃執行所有轉換,以達到優化的 DAG。 它通過將所有轉換聚合在一起來實現這一點,例如將單個連接數組轉換為單個連接 - 以提高性能。 此外,優化器可以通過在執行縮減操作之前對數據應用轉換來拆分不同的任務——再次提高整體性能。

5. 執行者——

一旦 Apache Hive 執行了編譯和優化任務,執行器就會執行最終的執行。 它負責將任務流水線化並完成任務。

6. CLI、UI 和 Thrift 服務器

命令行界面 (CLI) 用於為外部用戶提供用戶界面以與 Apache Hive 的不同功能進行交互。 CLI 是為最終用戶組成 Hive 的 UI。 另一方面,Thrift 服務器允許外部客戶端通過網絡與 Hive 交互,類似於 ODBC 或 JDBC 協議。

Apache Hive 的核心特性

如前所述,Apache Hive 為工程師處理數據作業的方式帶來了急需的改變。 Java 不再是首選語言,開發人員只需使用 SQL 即可工作。 除此之外,Hive 還有其他幾個基本功能,例如:

  • Apache Hive 以更加簡化的方式提供數據匯總、分析和查詢。
  • Hive 支持內部和外部表,使得無需將外部數據帶入 H DFS 即可處理外部數據。
  • Apache Hive 非常適合 Hadoop 的低級接口需求。
  • 通過支持表級別的數據分區,Apache Hive 有助於提高整體性能。
  • 它有一個基於規則的優化器,用於優化不同的邏輯計劃。
  • 它適用於 HiveQL,一種類似於 SQL 的語言,這意味著開發人員無需掌握另一種語言即可處理大型數據集。
  • 在 Hive 中查詢非常簡單,類似於 SQL。
  • 我們還可以使用 Hive 為數據分析運行 Ad-hoc 查詢。

Apache Hive 的限制

由於數據科學領域相對較新且不斷發展,即使是市場上最好的工具也有一些局限性。 解決這些限制將為我們提供下一個最佳工具。 以下是使用 Apache Hive 的一些限制,供您牢記:

  • Hive 不提供行級更新和實時查詢。
  • Apache Hive 為交互提供了可接受的延遲。
  • 它不是處理在線交易的最佳選擇。
  • Hive 查詢中的延遲通常高於平均水平。

綜上所述

Apache Hive 為數據工程師處理大型數據集的方式帶來了巨大而驚人的改進。 此外,通過完全消除對 Java 編程語言的需求,Apache Hive 為數據工程師帶來了熟悉的舒適感。 今天,如果您具備 SQL 查詢的基礎知識,就可以順利使用 Apache Hive。

正如我們前面提到的,數據科學是一個動態且不斷發展的領域。 我們確信,未來幾年將會出現新的工具和框架來進一步簡化事情。 如果您是一名數據愛好者,希望學習數據科學行業的所有工具,那麼現在是使用 Hive 等大數據工具的最佳時機。

在 upGrad,我們指導和指導了來自世界各地的學生,幫助不同背景的人在數據科學行業站穩腳跟。 我們的專家教師、行業合作夥伴、安置幫助和強大的校友網絡確保您在這個旅程中永遠不會孤單。 因此,請查看我們的數據科學執行 PG 計劃,並讓自己報名參加適合您的課程——剩下的交給我們!

Hadoop 中的 Apache Hive 是什麼?

Apache Hive 是一個用於存儲、查詢和分析大型數據集的框架或系統。 Apache Hive 由 Facebook 引入以增強其內部運營,此後一直是數據科學領域不可或缺的一部分。

我是否需要學習任何特定語言才能在 Hadoop 中使用 Apache Hive?

不! 只需 SQL 的工作知識就足以讓您開始使用 Apache Hive!

Apache Hive 不用於什麼?

Apache Hive一般用於OLAP(批處理),一般不用於OLTP,因為對數據庫的操作是實時的。