乾貨|一文帶你瞭解 Apache Hive2.x 的四大特性

中興開發者社群發表於2017-11-17

點選上方“中興開發者社群”,關注我們

每天讀一篇一線開發者原創好文640?wx_fmt=png&wxfrom=5&wx_lazy=1

文 | 黃榕華

來源:中興大資料


 

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 。

640?wx_fmt=png


支援使用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優化等等。


640?wx_fmt=jpeg

相關文章