Hive 不是
一個(gè)關(guān)系數(shù)據(jù)庫(kù)
一個(gè)設(shè)計(jì)用于聯(lián)機(jī)事務(wù)處理(OLTP)
實(shí)時(shí)查詢(xún)和行級(jí)更新的語(yǔ)言
Hiver特點(diǎn)
它存儲(chǔ)架構(gòu)在一個(gè)數(shù)據(jù)庫(kù)中并處理數(shù)據(jù)到HDFS。
它是專(zhuān)為OLAP設(shè)計(jì)。
它提供SQL類(lèi)型語(yǔ)言查詢(xún)叫HiveQL或HQL。
它是熟知,快速,可擴(kuò)展和可擴(kuò)展的。
Hive架構(gòu)
下面的組件圖描繪了Hive的結(jié)構(gòu):
該組件圖包含不同的單元。下表描述每個(gè)單元:
單元名稱(chēng)操作
用戶(hù)接口/界面Hive是一個(gè)數(shù)據(jù)倉(cāng)庫(kù)基礎(chǔ)工具軟件,可以創(chuàng)建用戶(hù)和HDFS之間互動(dòng)。用戶(hù)界面,Hive支持是Hive的Web UI,Hive命令行,HiveHD洞察(在Windows服務(wù)器)。
元存儲(chǔ)Hive選擇各自的數(shù)據(jù)庫(kù)服務(wù)器,用以?xún)?chǔ)存表,數(shù)據(jù)庫(kù),列模式或元數(shù)據(jù)表,它們的數(shù)據(jù)類(lèi)型和HDFS映射。
HiveQL處理引擎HiveQL類(lèi)似于SQL的查詢(xún)上Metastore模式信息。這是傳統(tǒng)的方式進(jìn)行MapReduce程序的替代品之一。相反,使用Java編寫(xiě)的MapReduce程序,可以編寫(xiě)為MapReduce工作,并處理它的查詢(xún)。
執(zhí)行引擎HiveQL處理引擎和MapReduce的結(jié)合部分是由Hive執(zhí)行引擎。執(zhí)行引擎處理查詢(xún)并產(chǎn)生結(jié)果和MapReduce的結(jié)果一樣。它采用MapReduce方法。
HDFS 或?HBASEHadoop的分布式文件系統(tǒng)或者HBASE數(shù)據(jù)存儲(chǔ)技術(shù)是用于將數(shù)據(jù)存儲(chǔ)到文件系統(tǒng)。
Hive工作原理
下圖描述了Hive 和Hadoop之間的工作流程。
下表定義Hive和Hadoop框架的交互方式:
Step No.操作
1?Execute Query
Hive接口,如命令行或Web UI發(fā)送查詢(xún)驅(qū)動(dòng)程序(任何數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,如JDBC,ODBC等)來(lái)執(zhí)行。
2?Get Plan
在驅(qū)動(dòng)程序幫助下查詢(xún)編譯器,分析查詢(xún)檢查語(yǔ)法和查詢(xún)計(jì)劃或查詢(xún)的要求。
3?Get Metadata
編譯器發(fā)送元數(shù)據(jù)請(qǐng)求到Metastore(任何數(shù)據(jù)庫(kù))。
4?Send Metadata
Metastore發(fā)送元數(shù)據(jù),以編譯器的響應(yīng)。
5?Send Plan
編譯器檢查要求,并重新發(fā)送計(jì)劃給驅(qū)動(dòng)程序。到此為止,查詢(xún)解析和編譯完成。
6?Execute Plan
驅(qū)動(dòng)程序發(fā)送的執(zhí)行計(jì)劃到執(zhí)行引擎。
7?Execute Job
在內(nèi)部,執(zhí)行作業(yè)的過(guò)程是一個(gè)MapReduce工作。執(zhí)行引擎發(fā)送作業(yè)給JobTracker,在名稱(chēng)節(jié)點(diǎn)并把它分配作業(yè)到TaskTracker,這是在數(shù)據(jù)節(jié)點(diǎn)。在這里,查詢(xún)執(zhí)行MapReduce工作。
7.1?Metadata Ops
與此同時(shí),在執(zhí)行時(shí),執(zhí)行引擎可以通過(guò)Metastore執(zhí)行元數(shù)據(jù)操作。
8?Fetch Result
執(zhí)行引擎接收來(lái)自數(shù)據(jù)節(jié)點(diǎn)的結(jié)果。
9?Send Results
執(zhí)行引擎發(fā)送這些結(jié)果值給驅(qū)動(dòng)程序。
10?Send Results
驅(qū)動(dòng)程序?qū)⒔Y(jié)果發(fā)送給Hive接口。