hive 3.x 新特性

Apache Hive 3.x 架構介紹


    hive 的更新操作一直是大數據倉庫頭痛的問題,在3.x之前也支持update,但是速度太慢,還需要進行分桶,現在hive 支持全新ACID,並且底層採用TEZ 和內存進行查詢,性能是hive2的50倍。生產建議升級到hive3.1.1版本。
    瞭解Apache Hive 3主要的設計更改,例如默認的ACID事務處理和僅支持瘦配置客戶端,可以幫助您使用新功能來滿足企業數據倉庫系統不斷增長的需求。


1.執行引擎更改


Apache Tez將MapReduce替換爲默認的Hive執行引擎。不再支持MapReduce,並證明了Tez的穩定性。通過有向無環圖(DAG)和數據傳輸原語的表達式,在Tez下執行Hive查詢可以提高性能。您提交給Hive的SQL查詢執行如下:

  1. Hive編譯查詢。

  2. Tez執行查詢。

  3. YARN爲羣集中的應用程序分配資源,併爲YARN隊列中的Hive作業啓用授權。

  4. Hive根據表類型更新HDFS或Hive倉庫中的數據。

  5. Hive通過JDBC連接返回查詢結果。

該過程的簡化視圖如下圖所示:

如果舊腳本或應用程序指定MapReduce執行,則會發生異常。您可以設置一個選項以靜默忽略MapReduce設置。

大多數用戶定義的函數(UDF)不需要在Tez而不是MapReduce上執行更改。


2.設計影響安全性的更改


以下Hive 3體系結構更改提供了更高的安全性:

2.1緊密控制的文件系統和計算機內存資源,取代靈活的邊界:確定的邊界提高了可預測性。更強大的文件系統控制可提高安
共享文件和YARN容器中的優化工作負載
2.2默認情況下,HDP 3.0 Ambari安裝添加了Apache Ranger安全服務。Hive的主要授權模型是Ranger。此模型僅允許Hive訪問HDFS。Hive強制執行Ranger中指定的訪問控制。此模型提供比其他安全方案更強的安全性以及更靈活的策略管理。

如果您未啓用Ranger安全服務或其他安全性,則默認情況下Hive使用基於用戶模擬的基於存儲的授權(SBA)。


3.HDFS權限更改


在HDP 3.0中,SBA在很大程度上依賴於HDFS訪問控制列表(ACL)。ACL是HDFS中權限系統的擴展。HDP 3.0默認打開HDFS中的ACL,爲您提供以下優勢:
在爲多個組和用戶提供特定權限時,可以提高靈活性
方便地將權限應用於目錄樹而不是單個文件


4.交易處理變更


您可以通過利用事務處理中的以下改進來部署新的Hive應用程序類型:
4.1成熟版本的ACID事務處理和LLAP:
ACID表是HDP 3.0中的默認表類型。
默認情況下啓用ACID不會導致性能或操作過載。
4.2簡化的應用程序開發,具有更強事務保證的操作,以及更簡單的SQL命令語義
您不需要在HDP 3.0中存儲ACID表,因此維護更容易。


5.其他特性修改

物化視圖重寫
自動查詢緩存


6.高級優化


6.1Hive客戶端更改
Hive 3僅支持瘦客戶端Beeline,用於從命令行運行查詢和Hive管理命令。Beeline使用與HiveServer的JDBC連接來執行所有命令。在HiveServer中進行解析,編譯和執行操作。Beeline支持與Hive CLI相同的命令行選項,但有一個例外:Hive Metastore配置更改。
您可以通過使用hive 關鍵字,命令選項和命令調用Beeline來輸入支持的Hive CLI命令。例如,hive -e set。使用Beeline而不是不再支持的胖客戶端Hive CLI有幾個優點,包括:
您現在只維護JDBC客戶端,而不是維護整個Hive代碼庫。
使用Beeline可以降低啓動開銷,因爲不涉及整個Hive代碼庫。
瘦客戶端體系結構有助於以這些方式保護數據:
會話狀態,內部數據結構,密碼等駐留在客戶端而不是服務器上。
執行查詢所需的少量守護進程簡化了監視和調試。
HiveServer強制執行您可以使用SET命令更改的白名單和黑名單設置。使用黑名單,您可以限制內存配置以防止HiveServer不穩定。您可以使用不同的白名單和黑名單配置多個HiveServer實例,以建立不同級別的穩定性。

6.2Hive客戶端的更改要求您使用grunt命令行來使用Apache Pig。

6.3pache Hive Metastore發生了變化
HiveServer現在使用遠程而不是嵌入式Metastore; 因此,Ambari不再使用hive.metastore.uris=' '.您不再key=value在命令行上設置 命令來配置Hive Metastore來啓動Metastore。您可以在hive-site.xml中配置屬性。Hive目錄位於Hive Metastore中,它與早期版本中的RDBMS一樣。使用此體系結構,Hive可以利用雲部署中的RDBMS資源。


7.Spark目錄更改


Spark和Hive現在使用獨立的目錄來訪問相同或不同平臺上的SparkSQL或Hive表。Spark創建的表駐留在Spark目錄中。Hive創建的表位於Hive目錄中。雖然是獨立的,但這些表互操作。
您可以使用HiveWarehouseConnector從Spark訪問ACID和外部表。
查詢批處理和交互式工作負載的執行
下圖顯示了批處理和交互式工作負載的HDP 3.0查詢執行體系結構:

您可以使用JDBC命令行工具(如Beeline)或使用帶有BI工具(如Tableau)的JDBC / ODBC驅動程序連接到Hive。客戶端與同一HiveServer版本的實例進行通信。您可以爲每個實例配置設置文件,以執行批處理或交互式處理。

原文鏈接:https://smileyboy2009.iteye.com/blog/2433512

官方網站:http://hive.apache.org/downloads.html

hive文檔:https://cwiki.apache.org/confluence/display/Hive/Home#Home-GeneralInformationaboutHive

spark官網:http://spark.apache.org/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章