Hive 入門介紹

1 Hive是什麼

  • Hive是構建在Hadoop之上的數據倉庫平臺;java

  • Hive是一個SQL解析引擎,它將SQL語句轉譯成MapReduce任務,並在Hadoop上執行;node

  • Hive表是HDFS的一個文件目錄,一個表名對應一個目錄名,若是有分區表的話,分區值是子目錄。mysql

2 Hive的設計目標

  • 使Hadoop上的數據操做與傳統SQL相結合,讓熟悉SQL的開發人員可以輕鬆向Hadoop平臺遷移;web

  • Hive提供相似SQL的查詢語言HQL, HQL在底層被轉換爲相應的MapReduce操做;算法

  • Hive在HDFS上構建數據倉庫來存儲結構化的數據,這些數據通常來源於HDFS上的原始數據,使用Hive能夠對這些數據執行查詢、分析等操做。sql

3 Hive的體系結構

輸入圖片說明

    Hive有三種service,分別是CLI、Hiveserver、HWI。
     - CLI是命令行接口,爲默認服務,啓動方式: $HIVE_HOME/bin/hive 或 $HIVE_HOME/bin/hive --service cli。每一個CLI獨享配置,即在一個CLI裏修改配置不影響別的CLI。
     - HiverServer經過thrift對外提供服務,默認端口10000,啓動方式爲:$HIVE_HOME/bin/hive --service hiveserver。 多個JDBC可同時連到同一HiveServer上,全部會話共享一份配置。(注:從0.9.0起HiveServer配置已經從global降爲session,即每一個session的配置相互獨立,見 [HIVE-2503])
     - HWI爲web接口,能夠經過瀏覽器訪問hive,默認端口9999,啓動方式爲:$HIVE_HOME/bin/hive --service hwi。 多個瀏覽器可同時連到同一HWI上,全部會話共享一份配置。數據庫

     每一個service互相獨立,有各自的配置文件(配置metasotre/namenode/jobtracker等),若是metasotre的配置同樣則物理上對應同一hive庫。編程

     Driver用於解釋、編譯、優化、執行HQL,每一個service的Driver相互獨立。瀏覽器

     MetaStoreMetastore是Hive元數據的集中存放地,通常採用mysql或derbby。MetaStore位置經過參數javax.jdo.option.ConnectionURL來指定,可在會話中自由修改。相關的參數包括:session

javax.jdo.option.ConnectionDriverName   #數據庫驅動    
     javax.jdo.option.ConnectionURL          #數據庫ip端口庫名等    
     javax.jdo.option.ConnectionUserName     #用戶名   
     javax.jdo.option.ConnectionPassword     #密碼

4 Hive的工做原理

     下圖描述了Hive 和Hadoop之間的工做流程: 輸入圖片說明

5 Hive的優點

  • 並行計算,可充分利用集羣的CPU計算資源、存儲資源;
  • 處理大規模數據集;
  • Hive支持標準SQL語法,免去了編寫MR程序的過程,減小了開發成本;
  • Hive是爲大數據批量處理而生的,解決了傳統的關係型數據庫在大數據處理上的瓶頸;

6 Hive的應用場景

6.1 適合場景

  • 數據挖掘
  • 數據分析、聯機分析處理(OLAP)
  • SQL是商業智能報表的通用語言, 使得Hive有條件與這些BI產品進行集成

6.1 不適合場景

  • 複雜的機器學習算法
  • 複雜的科學計算
  • 交互式的實時查詢

7 參考資料

  1. Hive體系架構
  2. Hive編程參考
相關文章
相關標籤/搜索