目錄[隱藏][顯示]
Hive 是企業中廣泛使用的大數據分析工具,如果您是大數據新手,那麼它是一個絕佳的起點。 本 Apache Hive 課程介紹了 Apache Hive 的基礎知識、為什麼需要 Hive、它的功能以及您應該了解的其他所有內容。
讓我們首先了解 Apache Hive 所基於的 Hadoop 框架。
阿帕奇Hadoop
Apache Hadoop 是一個免費且 開放源碼 用於存儲和處理大小從 GB 到 PB 的大數據集的平台。 Hadoop 允許聚集大量計算機來並行分析巨大的數據集,而不是需要一台大型計算機來存儲和分析數據。
MapReduce 和 Hadoop 分佈式文件系統是其中兩個組件:
- 地圖簡化 – MapReduce 是一種並行編程技術,用於處理商用硬件集群上的大量有組織、半結構化和非結構化數據。
- 高密度文件系統 – HDFS(Hadoop分佈式文件系統)是存儲和處理數據的Hadoop框架組件。 它是一個在標準硬件上運行的容錯文件系統
Hadoop生態系統中的不同子項目(工具),包括Sqoop、Pig和Hive,用於輔助Hadoop模塊。
- 蜂房 – Hive 是一個用於編寫執行 MapReduce 計算的 SQL 樣式腳本的框架。
- 豬 – Pig 是一種過程編程語言,可用於為 MapReduce 進程創建腳本。
- 勺子 – Sqoop是一個用於在HDFS和RDBMS之間導入和導出數據的工具。
什麼是 阿帕奇蜂巢?
Apache Hive 是一個開源 數據倉庫 用於讀取、寫入和管理直接存儲在 Apache Hadoop 分佈式文件系統 (HDFS) 或其他數據存儲系統(如 Apache HBase)中的龐大數據集的程序。
SQL開發人員可以使用Hive創建Hive查詢語言(HQL)語句來進行與常規SQL語句相當的數據查詢和分析。 它的創建是為了消除學習和編寫冗長的 Java 代碼的需要,從而使 MapReduce 編程變得更容易。 相反,您可以用 HQL 編寫查詢,Hive 將為您構建映射並減少函數。
Apache Hive 的類 SQL 界面已成為執行即席搜索、匯總和分析 Hadoop 數據的黃金標準。 當包含在雲中時 計算網絡,該解決方案特別具有成本效益和可擴展性,這也是包括 Netflix 和 Amazon 在內的許多公司不斷開發和改進 Apache Hive 的原因。
發展歷程
在 Facebook 任職期間,Joydeep Sen Sarma 和 Ashish Suchoo 共同創建了 Apache Hive。 他們都認識到,為了充分利用 Hadoop,他們必須創建一些相當複雜的 Java Map-Reduce 任務。 他們認識到,他們無法對快速擴張的工程和分析團隊進行培訓,讓他們掌握在整個公司利用 Hadoop 所需的技能。 工程師和分析師經常使用 SQL 作為用戶界面。
雖然 SQL 可以滿足大多數分析需求,但開發人員還打算整合 Hadoop 的可編程性。 Apache Hive 源於這兩個目標:一種基於 SQL 的聲明性語言,當 SQL 不夠時,它還使開發人員能夠引入自己的腳本和程序。
它還被開髮用於保存有關公司所有數據集的集中元數據(基於 Hadoop),以便更輕鬆地構建數據驅動型組織。
Apache Hive 是如何工作的?
簡而言之,Apache Hive 將以 HiveQL(類似 SQL)語言編寫的輸入程序轉換為一個或多個 Java MapReduce、Tez 或 Spark 任務。 (所有這些執行引擎都與 Hadoop YARN 兼容。)之後,Apache Hive 將數據排列到 Hadoop 分佈式文件系統 HDFS 的表中,並在集群上執行任務以獲得答案。
數據
Apache Hive 表的排列方式與關係數據庫中表的組織方式相同,數據單元的大小從大到小不等。 數據庫由分為多個部分的表組成,這些部分進一步分為多個存儲桶。 HiveQL(Hive 查詢語言)用於訪問可以更改或附加的數據。 表數據在每個數據庫內序列化,每個表都有自己的 HDFS 目錄。
架構
現在我們將討論 Hive 架構中最重要的方面。 Apache Hive 的組件如下:
元存儲 — 它跟踪每個表的信息,例如其結構和位置。 分區元數據同樣包含在 Hive 中。 這允許驅動程序跟踪分佈在集群中的不同數據集的進度。 數據以傳統的 RDBMS 格式存儲。 Hive 元數據對於驅動程序跟踪數據非常重要。 備份服務器定期復制數據,以便在數據丟失時可以恢復。
司機 – HiveQL 語句由驅動程序接收,驅動程序充當控制器。 通過建立會話,驅動程序啟動語句的執行。 它跟踪高管的生命週期和進展。 在執行 HiveQL 語句期間,驅動程序會保存所需的元數據。 它還充當Reduce過程之後的數據或查詢結果收集點。
編譯器 – 它執行 HiveQL 查詢編譯。 該查詢現在已轉換為執行計劃。 計劃中列出了任務。 它還包括 MapReduce 為獲取查詢翻譯的結果必須採取的步驟。 Hive 的編譯器 (AST) 將查詢轉換為抽象語法樹。 檢查兼容性和編譯時錯誤 (DAG) 後,將 AST 轉換為有向無環圖。
優化 – 它通過對執行計劃執行不同的更改來優化 DAG。 它結合了轉換以提高效率,例如將連接管道轉變為單個連接。 為了提高速度,優化器可能會劃分活動,例如在執行歸約操作之前對數據應用轉換。
執行者 – 執行器在編譯和優化完成後運行任務。 這些作業由執行器進行管道傳輸。
CLI、UI 和 Thrift 服務器 – 命令行界面 (CLI) 是允許外部用戶與 Hive 通信的用戶界面。 Hive 的 thrift 服務器類似於 JDBC 或 ODBC 協議,允許外部客戶端通過網絡與 Hive 進行通信。
安全性
Apache Hive 與 Hadoop 安全性集成,後者使用 Kerberos 進行客戶端-服務器相互身份驗證。 HDFS 規定了 Apache Hive 中新生成的文件的權限,允許您由用戶、組和其他人批准。
主要特徵
- Hive 支持外部表,使您可以處理數據而無需將其存儲在 HDFS 中。
- 它還支持表級別的數據分段以提高速度。
- Apache Hive 很好地滿足了 Hadoop 的底層接口需求。
- Hive 讓數據匯總、查詢和分析變得更加容易。
- HiveQL 不需要任何編程技能; 簡單理解 SQL 查詢就足夠了。
- 我們還可以使用Hive進行即席查詢以進行數據分析。
- 它具有可擴展性、熟悉性和適應性。
- HiveQL 不需要任何編程技能; 簡單理解 SQL 查詢就足夠了。
優點
Apache Hive 允許進行日終報告、每日交易評估、臨時搜索和數據分析。 Apache Hive 提供的全面見解可帶來顯著的競爭優勢,讓您更輕鬆地響應市場需求。
以下是隨時獲取此類信息的一些好處:
- 易於使用 – 使用類似 SQL 的語言,查詢數據很容易理解。
- 加速數據插入 — 由於 Apache Hive 在不驗證表類型或架構定義的情況下讀取架構,因此不必以數據庫的內部格式讀取、解析數據並將其序列化到光盤。 相比之下,在傳統數據庫中,每次添加數據時都必須對其進行驗證。
- 卓越的可擴展性、靈活性和成本效益 – 由於數據存儲在 HDFS 中,Apache Hive 可以容納 100 PB 的數據,使其成為比典型數據庫更具可擴展性的選擇。 Apache Hive 作為基於雲的 Hadoop 服務,允許客戶快速啟動和關閉虛擬服務器以滿足不斷變化的工作負載。
- 廣泛的工作能力 – 大型數據集每小時可處理多達 100,000 個查詢。
限制
- 一般來說,Apache Hive 查詢的延遲非常高。
- 子查詢支持是有限的。
- Apache Hive 中不提供實時查詢和行級更改。
- 不支持物化視圖。
- 在配置單元中,不支持更新和刪除操作。
- 不適用於 OLTP(在線轉換過程)。
Apache Hive 入門
Apache Hive 是強大的 Hadoop 合作夥伴,可簡化您的工作流程。 為了充分利用 Apache Hive,無縫集成至關重要。 第一步是去 網站.
1. 從穩定版本安裝 Hive
首先從 Apache 下載鏡像之一下載 Hive 的最新穩定版本(請參閱 Hive 版本)。 然後必須解壓 tarball。 這將創建一個名為 hive-xyz 的子文件夾(其中 xyz 是版本號):
設置環境變量 HIVE_HOME 指向安裝目錄:
最後,將 $HIVE_HOME/bin 添加到您的 PATH
:
2. 運行 Hive
Hive 使用 Hadoop,因此:
- 您的路徑中必須有 Hadoop 或
3.DLL操作
創建 Hive 表
生成一個名為 pokes 的表,其中有兩列,第一列是整數,第二列是字符串。
瀏覽表格
列出所有表
更改和刪除表
可以更改表名稱,並且可以添加或替換列:
值得注意的是,REPLACE COLUMNS 會替換所有現有列,同時僅更改表的結構而不更改數據。 表中必須使用本機 SerDe。 REPLACE COLUMNS 還可以用於從表的架構中刪除列:
刪除表
Apache Hive 還有很多額外的操作和功能,您可以通過訪問官方網站了解。
結論
Hive 定義是一個數據程序接口,用於查詢和分析構建在 Apache Hadoop 之上的龐大數據集。 專業人士選擇它而不是其他程序、工具和軟件,因為它主要針對 Hive 大量數據而設計,並且易於使用。
希望本教程可以幫助您開始使用 Apache Hive 並使您的工作流程更加高效。 讓我們在評論中知道。
發表評論