Apache Hive 3.x 的重大變更改進了Apache Hive 2.x事務和安全性。了解這些版本之間的主要差異對于 SQL 使用者至關重要,包括使用 Apache Spark 和 Apache Impala 的使用者。
這是CDP中Apache Hive3使用者指南系列之一,之前的文章請參考<
CDP的Hive3系列之Hive Metastore介紹 >.1. Apache Hive3特性
Hive 是一個資料倉庫系統,用于彙總、查詢和分析龐大的不同資料集。
1.1 ACID 事務處理
Hive 3 表符合 ACID(原子性、一緻性、隔離性和持久性)。Hive 3 寫入和讀取操作提高了事務表的性能。原子操作包括簡單的寫入和插入、寫入多個分區以及在單個 SELECT 語句中進行多次插入。讀取操作不受操作期間發生的更改的影響。您可以插入或删除資料,并且在軟體和硬體崩潰期間保持一緻。這簡化了 Hive 表的建立和維護,因為hive不再需要使用Bucket表。
1.2 物化視圖
由于多個查詢經常需要同一個中間彙總表或連接配接表,是以您可以通過預先計算中間表并将其緩存到視圖中來避免成本高昂、重複的查詢部分共享。
1.3 查詢結果緩存
Hive 過濾和緩存相似或相同的查詢。Hive 不會重新計算未更改的資料。當成百上千的 BI 工具和 Web 服務使用者查詢 Hive 時,緩存重複查詢可以顯着減少負載。
1.4 計劃查詢
使用 SQL 語句,您可以安排 Hive查詢重複運作、監控查詢進度、暫時忽略查詢計劃并限制并行運作的數量。例如,您可以使用計劃查詢來啟動壓縮并定期重建物化視圖。
1.5 Spark 與 Hive 的內建
Spark 和 Hive 表使用 Hive Warehouse Connector 和 Spark Direct Reader 進行互操作以通路 ACID 管理的表。您可以使用 SparkSQL 直接從 Spark 通路外部表。
您不需要使用 HWC 來讀取或寫入 Hive 外部表。Spark 使用者隻是直接從 Hive 讀取或寫入。您可以讀取 ORC 或 Parquet 格式的 Hive 外部表。但是您隻能以 ORC 格式寫入到 Hive 的外部表。
1.6 安全改進
預設使用Apache Ranger 保護 Hive 的資料。為了滿足并發改進、ACID 支援、渲染安全性和其他功能的需求,Hive 嚴格控制檔案系統或對象存儲上的倉庫位置以及記憶體資源。
借助 Apache Ranger 和 Apache Hive ACID的支援,您的組織将準備好支援和實施 GDPR(通用資料保護條例)。
1.7 查詢級别的工作負載管理
您可以配置誰使用查詢資源、可以使用多少、以及 Hive 響應資源請求的速度。工作負載管理可以改進并行查詢執行、查詢的叢集共享和查詢性能。盡管名稱相似,但 Hive 工作負載管理查詢與 Cloudera Workload XM 無關,用于報告和檢視數百萬個查詢和數百個資料庫。
1.8 連接配接池
Hive 支援 HakariCP JDBC 連接配接池。
1.9 不支援的功能
CDP 不支援 HDP 和 CDH 平台中可用的以下功能:
· 指定托管表位置的 CREATE TABLE語句
不要使用 LOCATION 子句來建立托管表。Hive 将倉庫中的預設位置配置設定給托管表。
· 建立索引
Hive 自動在ORC或者Parquet的主表中建構和存儲索引,而不是将索引維護在不同的表中。設定 hive.optimize.index.filter為啟用使用(不推薦——改為使用物化視圖)。在更新期間,現有索引在Parquet 或 ORC 中保留并遷移到 CDP。
原文連結:
https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-introduction/topics/hive_whats_new_in_this_release_hive.html2 Hive on Tez 簡介
Cloudera 資料平台 (CDP) 服務,提供 Apache Tez 執行的 Apache Hive SQL 資料庫。
Hive on Tez 服務提供基于 Apache Hive 3.x 的基于 SQL 的資料倉庫系統。Hive 3.x 中相對于以前版本的增強可以提高 SQL 查詢性能、安全性和審計功能。Hive Metastore (HMS) 是一個單獨的服務,不是 Hive 的一部分,甚至不一定在同一個叢集上。HMS 将中繼資料存儲在後端,用于 Hive、Impala、Spark 和其他元件。
Apache Tez 是 Hive on Tez 服務的 Hive 執行引擎,其中包括 Cloudera Manager 中的 HiveServer (HS2)。不支援 MapReduce。在 Cloudera 叢集中,如果遺留腳本或應用程式指定 MapReduce 執行,則會發生異常。大多數使用者定義的函數 (UDF) 不需要更改即可在 Tez 而不是 MapReduce 上執行。
通過有向無環圖 (DAG) 和資料傳輸原語的表達式,在Tez 上執行 Hive 查詢而不是 MapReduce 提高了查詢性能。在 Cloudera Data Platform (CDP) 中,Tez 通常僅供 Hive 使用,并在 Tez 上的 Hive 啟動時自動啟動和管理 Tez AM。您送出給 Hive 的 SQL 查詢執行如下:
· Hive 編譯查詢。
· Tez 執行查詢。
· 為整個叢集的應用程式配置設定資源。
· Hive 更新資料源中的資料并傳回查詢結果。
Hive on Tez 在臨時容器上運作任務并使用标準的 YARN shuffle 服務。預設情況下,Hive 資料存儲在 HDFS 上。如果您不啟用 Ranger 安全服務或其他安全性,預設情況下 Hive 使用基于使用者模拟的基于存儲的授權 (SBA)。
https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-introduction/topics/hive-on-tez.html3 Hive 不支援的接口和功能
您需要了解不受支援的 HDP 或 CDH 平台中可用的接口。
CDP Private Cloud Base不支援以下接口:
· Druid
· Hcat CLI (however HCatalog is supported)
· Hive CLI (replaced by Beeline)
· Hive View
· LLAP
· MapReduce execution engine (replaced by Tez)
· Pig
· S3 for storing tables
· Spark execution engine (replaced by Tez)
· Spark thrift server
Spark 和 Hive 表使用 Hive 倉庫連接配接器(HWC)進行互操作。
· SQL 标準授權
· Tez View
o WebHCat
您可以使用 Hue 代替 Hive View。
3.1 部分不支援的接口
不支援使用 Apache Hadoop 分布式副本 (DistCP) 來複制 Hive ACID 表。
https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-introduction/topics/hive-unsupported.html4 Apache Hive 3 架構概述
了解 Apache Hive 3 的主要設計特性,例如預設的ACID 事務處理,可以幫助您使用Hive 來滿足企業資料倉庫系統不斷增長的需求。
4.1 資料存儲和通路控制
支援 Hive 3 設計的主要架構更改之一使Hive 可以更好地控制中繼資料記憶體資源和檔案系統或對象存儲。從 Hive 2 到 Hive 3 的以下架構更改提供了更高的安全性:
· 嚴格控制檔案系統和計算機記憶體資源,取代靈活的邊界:明确的邊界增加了可預測性。更好的檔案系統控制可提高安全性。
· 在共享檔案和 YARN 容器中優化的工作負載
Hive 3 通過以下方式針對對象存儲進行了優化:
· Hive 使用 ACID 來确定要讀取的檔案,而不是依賴于存儲系統。
· 在 Hive 3 中,檔案移動比 Hive 2 中減少了。
· Hive 主動緩存中繼資料和資料以減少檔案系統操作
Hive 的主要授權模型是 Ranger。Hive 強制執行 Ranger 中指定的通路控制。此模型提供比其他安全方案更強的安全性,并在管理政策方面具有更大的靈活性。
該模型隻允許 Hive 通路 Hive 倉庫。
4.2 事務處理
您可以利用以下事務處理特性來部署新的 Hive 應用程式類型:
· ACID 事務處理的成熟版本:
ACID 表是預設的表類型。
預設啟用的 ACID 不會導緻性能或操作過載。
· 簡化的應用程式開發、具有強大事務保證的操作以及 SQL 指令的簡單語義
· 您不需要存儲 ACID 表。
· 物化視圖重寫
· 自動查詢緩存
· 進階優化
4.3 Hive 用戶端的更改
您可以使用瘦用戶端 Beeline 從指令行查詢 Hive。您可以從指令行運作 Hive 管理指令。Beeline 使用到 Hive 的 JDBC 連接配接來執行指令。Hive 解析、編譯和執行操作。Beeline 支援 Hive CLI 支援的許多指令行選項。Beeline 不支援hive -e set key=value來配置 Hive Metastore。
您可以通過使用hive 關鍵字、指令選項和指令調用 Beeline 來輸入受支援的 Hive CLI 指令。例如,hive -e set。使用 Beeline 代替不再支援的胖用戶端 Hive CLI 有幾個優點,包括低開銷。Beeline 不使用整個 Hive 代碼庫。執行查詢所需的少量守護程式簡化了監控和調試。
Hive 強制執行白名單和黑名單設定,您可以使用 SET 指令更改這些設定。使用黑名單,您可以限制記憶體配置更改以防止不穩定。不同的 Hive 執行個體具有不同的白名單和黑名單,以建立不同級别的穩定性。
4.4 Apache Hive Metastore 共享
Hive、Impala 和其他元件可以共享遠端的 Hive Metastore。
4.5 Spark 內建
Spark 和 Hive 表使用Hive Warehouse Connector(HWC)進行互操作。
您可以使用 HWC從Spark 通路 ACID 和外部表。您不需要 使用HWC即可從 Spark 讀取 Hive 外部表并從 Spark 寫入 Hive 外部表。您也不需要使用 HWC 即可讀取或寫入 Hive的 外部表。Spark 使用者隻是直接從 Hive 讀取或寫入資料。您可以讀取 ORC 或 Parquet 格式的 Hive 外部表,但是您隻能以 ORC 格式寫入 Hive的外部表。
4.6 批處理和互動式工作負載的查詢執行
您可以使用 JDBC 指令行工具(例如 Beeline)或使用 JDBC/ODBC 驅動程式和 BI 工具(例如 Tableau)連接配接到 Hive。您可以為每個執行個體配置設定檔案以執行批處理或互動式處理。
https://docs.cloudera.com/cdp-private-cloud-base/latest/hive-introduction/topics/hive-apache-hive-3-architectural-overview.html