乾貨|一文帶你瞭解 Apache Hive2.x 的四大特性
點選上方“中興開發者社群”,關注我們
每天讀一篇一線開發者原創好文
文 | 黃榕華
來源:中興大資料
Apache Hive2.x版本推出了多個閃亮的大特性,這些都值得Hive開發者為之振奮。
”Apache Hive是建立在Hadoop上的開源資料倉儲框架,它提供類SQL語言HQL,以便讀取、寫入和管理Hadoop中的海量資料集。
Apache Hive從第一個release版本到Hive1.2.1的一系列功能都已被很多開發者熟知,國內不少廠商也使用到Hive1.1或1.2版本的特性。但是在2016年之後逐漸釋出的Apache Hive2.x版本中,社群推出了多個閃亮的大特性,這些都值得Hive開發者為之振奮。本文將為大家介紹Apache Hive2.x版本的四個重大特性。
我們先總體來看一下這四個特性是什麼:
-
LLAP
-
支援使用HPL/SQL的儲存過程語言
-
更智慧的成本優化器CBO
-
全面詳盡的監控和診斷工具
下面我們再將這些特性展開介紹。
通過LLAP達到亞秒級查詢,極大提升效能
Hive2.1推出的LLAP是下一代分散式計算架構,它能夠智慧地將資料快取到多臺機器記憶體中,並允許所有客戶端共享這些快取的資料,同時保留了彈性伸縮能力。通過LLAP(Live Long and Process),Hive2.1進行了極大的效能優化。在Hive2.x開啟LLAP與Apache Hive1.x進行對比測試,其效能提升約25倍。
同樣基於Hive on Tez的TPC-DS查詢,做“Hive1.x+Tez”和“Hive2.1+Tez+LLAP”的效能對比測試,結果是後者效能提升到前者的25倍了。
LLAP提供了一個高階的執行模式,它啟用一個長時存活的守護程式去和HDFS DataNode的直接互動,也是一個緊密整合的DAG框架。這個守護程式中加入了快取、預抓取、查詢過程和訪問控制等功能。短小的查詢由守護程式執行,大的重的操作由YARN的Container執行。下面是Hive+Tez與Hive + Tez + LLAP的任務執行原理圖,其中Task可以是group by、shuffle join 等Hive Task 。
支援使用HPL/SQL的儲存過程
Hive2.0.0推出的Hive Hybrid Procedural SQL On Hadoop (HPL/SQL) 是一個在Hive上執行過程SQL的工具,它可以表達複雜的業務規則。
HPL/SQL具備以下特點:
-
支援使用變數、表示式、控制流宣告、迭代來實現業務邏輯,支援使用異常處理程式和條件處理器來實現高階錯誤處理。
-
使SQL-on-Hadoop更加動態,即:支援使用高階表示式、各種內建函式,基於使用者配置、先前查詢的結果、來自檔案或非Hadoop資料來源的資料,即時動態地生成SQL條件。
-
利用已有的儲存過程SQL技能:大量的資料庫開發者和資料分析師都熟悉傳統資料庫的儲存過程語言,HPL/SQL有利於這部分技能的充分利用。相較於Python、Java或者Linux指令碼,HPL/SQL讓更多的BI分析師和開發者都能使用上Hadoop。
-
讓傳統ETL開發更高效,因為它提供函式和宣告。
-
為BI/SQL開發者提供更高可讀性和可維護性。
-
方便整合和支援多種型別的資料倉儲,即:可以實現單個指令碼來處理包括Hadoop、RDBMS、NoSQL等多個系統的資料,開發者只需要考慮各個系統負載。
-
廣泛的相容性和可移植性。
總的來說,Hive支援HPL/SQL是廣大BI/SQL開發者的一大福音,通過Hive我們使用儲存過程訪問Hadoop資料了。
更智慧的成本優化器CBO
Hive2.0開始持續不斷地優化成本優化器CBO,尤其是在BI業務關注的TPC-DS查詢上。
提供全面詳盡的監控和診斷工具
可以通過新的Hive Server2 Web UI,LLAP Web UI和Tez Web UI檢視Hive相關的HQL查詢以及關聯的作業狀態和日誌。豐富了Hive使用者的運維和排錯的手段。
當然,Hive2.x除了以上新特性外,還有其他的優化特性在持續不斷的更新,例如Hive-on-Spark優化、事務ACID優化等等。
相關文章
- 一文帶你瞭解求職面試那些名詞(乾貨)求職面試
- 超級乾貨:帶你全面瞭解低程式碼!
- 遊戲技能該如何設計?這二篇乾貨帶你瞭解遊戲
- 一文帶你瞭解 JS Module 的始末JS
- 一文帶你瞭解nginx基礎Nginx
- 一文帶你瞭解HDFS技術
- 一文帶你瞭解Java的命名規範!Java
- 一文帶你瞭解Java反射機制Java反射
- 【星課堂】一文帶你瞭解webSocketWeb
- 一文章帶你瞭解微服務微服務
- 一文帶你瞭解 JVM 的垃圾回收機制JVM
- 一文帶你瞭解python中的多型Python多型
- 乾貨分享!帶你瞭解數棧FlinkX實時採集原理與使用
- 乾貨!一分鐘帶你瞭解如何測試海外HTTP代理的ip可用率!HTTP
- 一文帶你瞭解內部開發者門戶
- ? 一文帶你瞭解多檔案混淆加密加密
- 一文帶你瞭解執行緒池原理執行緒
- 一文帶你瞭解什麼是工控機?
- 使用示例帶你提前瞭解 Java 9 中的新特性Java
- 一文帶你瞭解 Spring 的@Enablexxx 註解Spring
- 【乾貨】MySQL底層架構設計,你瞭解多少?MySql架構
- 共享WiFi專案盈利如何?一文帶你瞭解WiFi
- 一文帶你全面瞭解網路遊戲的社交生態遊戲
- 一文帶你深入瞭解 Redis 的持久化方式及其原理Redis持久化
- 一文帶你看通透,MySQL事務ACID四大特性實現原理MySql
- 帶你瞭解資料庫中事務的ACID特性資料庫
- 帶你瞭解PHP7裡生成器的新特性PHP
- 帶你瞭解webpackWeb
- 熬夜之作:一文帶你瞭解Cat分散式監控分散式
- 一文帶你瞭解 WGCLOUD 監控硬碟故障 SMARTGCCloud硬碟
- 一文帶你瞭解python語言命名規則!Python
- 千字乾貨 | 一文帶你快速掌握資料庫相關概念資料庫
- 綜述:一文帶你瞭解情感分析的方法有幾種
- 一文帶你帶你瞭解企業如何有效推進ERP系統的實施?
- 帶你快速瞭解HTMLHTML
- NVIDIA RTX30系列顯示卡有哪些新特性?一文帶你瞭解RTX30系顯示卡
- 純乾貨:21天帶你玩轉容器
- [乾貨]谷歌外掛跨域你可以瞭解下谷歌跨域