Hive:應用設計

花和尚也有春天發表於2018-10-17

理解Hive

① Hive類似於HDFS客戶端,Hive所有表資料均存放在HDFS中,後設資料資訊存放於Mysql。Hive表結構設計,實際設計的是對HDFS資料的訪問方式,或者資料組織方式。對Hive表資料的操作最終以MapReduce任務的形式提交到叢集,並返回任務執行的結果。

② Hive作為架構於HDFS之上的資料操作框架,其分散式特性來自於HDFS和MapReduce而並非自身,因此,Hive以單機形式執行於叢集即可(叢集外亦可)。通過在hive-env.sh中設定HADOOP_HOME,即可將Hive繫結到指定的HDFS叢集。

③ Hive對錶資料執行的計算工作交由MapReduce實際執行,從而使得Hive對資料的操作具有一定的延遲。因此,Hive的核心在於將簡單的類SQL語句轉化為MapReduce任務對HDFS中的資料進行操作。

Hive on spark將計算引擎修改為spark,能夠提高對批量資料的執行效率。但其應用場景不變,仍適用的是對儲存於HDFS中的海量歷史資料進行離線分析處理。

⑤ Hive自身的所有特性,均表達的是對HDFS中資料操作的解構,簡單來說是一個操作HDFS資料的工具。利用Hive提供給熟悉SQL語言但陌生於java MapReduce程式設計的人員以方便的介面進行HDFS資料訪問和操作。

Hive適用場景

由Hive的設計初衷,Hive提供對HDFS資料的便捷訪問和操作。同時Hive以表的形式組織HDFS資料,使得對資料的訪問和操作粒度更小,操作更便捷,而非由繁瑣的程式設計實現。因此,如果需要對HDFS中的資料完成一些簡單的操作(具體見Hive操作部分)且不用編寫複雜的Java程式碼,或者需要提供給外部人員對HDFS資料訪問的介面,Hive是合適的選項。

原文參考:https://blog.csdn.net/regan_hoo/article/details/78672118

相關文章