Hive是構建在Hadoop之上的數據倉庫平臺;java
Hive是一個SQL解析引擎,它將SQL語句轉譯成MapReduce任務,並在Hadoop上執行;node
Hive表是HDFS的一個文件目錄,一個表名對應一個目錄名,若是有分區表的話,分區值是子目錄。mysql
使Hadoop上的數據操做與傳統SQL相結合,讓熟悉SQL的開發人員可以輕鬆向Hadoop平臺遷移;web
Hive提供相似SQL的查詢語言HQL, HQL在底層被轉換爲相應的MapReduce操做;算法
Hive在HDFS上構建數據倉庫來存儲結構化的數據,這些數據通常來源於HDFS上的原始數據,使用Hive能夠對這些數據執行查詢、分析等操做。sql
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 #密碼
下圖描述了Hive 和Hadoop之間的工做流程: