hive3.0的新特性有許多,比較主要的改變有
- 執行引擎變更為TEZ,不使用MR
- 成熟的ACID大數據事務支持
- LLAP用于妙極,毫秒級查詢訪問
- 批處理使用TEZ,實時查詢使用LLAP
增強的內容如下: - 基于Apache Ranger的統一權限管理(sentry在企業中使用也是比較多的,cdh默認就支持.在cdh高版本中默認切花到ranger上了.主要是sentry使用上的笨重.)
- 默認開啟HDFS ACLs(數據安全目前是數倉發展的重要方向)
- Beeline代替Hive Cli,降低啟動開銷(主要考慮hive cli的使用安全性上,畢竟是可以繞過認證和建權)
- 不再支持內嵌Metastore(3種metastore的部署方案,企業中一般使用遠端部署metastore)
Apache TEZ是一個針對Hadoop數據處理應用程序的分布式計算框架,基于Yarn且支持DAG作業的開源計算框架。Tez產生的主要原因是繞開MapReduce所施加的限制,逐步取代MR,提供更高的性能和靈活性。
Apache TEZ的核心思想是將Map和Reduce拆分成若干子過程,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,分解后可以靈活組合成一個大的DAG作業。
Apache TEZ兼容MR任務,不需要代碼層面的改動。
Apache TEZ提供了較低級別的抽象,為了增強Hive/Pig的底層實現,而不是最終面向用戶的。
LLAP(Live Long and Process)實時長期處理,是Hive3的一種查詢模式,由一個守護進程和一個基于DAG的框架組成,LLAP不是執行引擎(MR/Tez),它用來保證Hive的可伸縮性和多功能性,增強現有的執行引擎。
LLAP的守護進程長期存在且與DataNode直接交互,緩存,預讀取,某些查詢處理和訪問控制功能包含在這個守護程序中用于直接處理小的查詢,而計算與IO較大的繁重任務會提交Yarn執行。守護程序不是必須的,沒有它Hive仍能正常工作。對LLAP節點的請求都包含元數據信息和數據位置,所以LLAP節點無狀態。
可以使用Hive on Tez use LLAP來加速OLAP場景(OnLine Analytical Processing聯機分析處理)
LLAP為了避免JVM內存設置的限制,使用堆外內存緩存數據以及處理GROUP BY/JOIN等操作,而守護程序僅使用少量內存。
Hive3支持兩種查詢模式Container和LLAP
hive3.0就支持ACID, 但是只有ORC的存儲格式數據才能進行修改和刪除操作。比如PARQUET只是擁有了ACID特性,但同樣不能進行更新刪除的操作。
SPARK2.3 也不支持更新刪除的操作,但是HIVE表結構變更后再不需要手動REFLASH刷新SPARK的緩存數據了。
APACHE SPARK2.4.2 開始支持ACID數據的更新刪除操作,數據源需要是基于PARQUET格式的DELTA LAKE數據(Databricks開源),傳統的PARQUET數據可以很容易轉換為DELTA LAKE的數據。