什么是Hive?hive與hbase的聯(lián)系與區(qū)別?

Hive最初是應(yīng)Facebook每天產(chǎn)生的海量新興社會(huì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行管理和機(jī)器學(xué)習(xí)的需求而產(chǎn)生和發(fā)展的。那么,到底什么是Hive,我們先看看Hive官網(wǎng)Wiki是如何介紹Hive的

The Apache Hive data warehouse software facilitates querying and managing large datasets residing in distributed storage.Built on top of Apache HadoopTM, it provides:  
(1)、Tools to enable easy data extract/transform/load (ETL)  
(2)、A mechanism to impose structure on a variety of data formats  
(3)、Access to files stored either directly in Apache HDFSTM or in other data storage systems such as Apache HBaseTM
(4)、Query execution via MapReduce

上面英文的大致意思是:
Apache Hive數(shù)據(jù)倉庫軟件提供對(duì)存儲(chǔ)在分布式中的大型數(shù)據(jù)集的查詢和管理,它本身是建立在Apache Hadoop之上,主要提供以下功能:
(1)它提供了一系列的工具,可用來對(duì)數(shù)據(jù)進(jìn)行提取/轉(zhuǎn)化/加載(ETL);
(2)是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在HDFS(或者HBase)中的大規(guī)模數(shù)據(jù)的機(jī)制;
(3)查詢是通過MapReduce來完成的(并不是所有的查詢都需要MapReduce來完成,比如select * from XXX就不需要;
(4)在Hive0.11對(duì)類似select a,b from XXX的查詢通過配置也可以不通過MapReduce來完成

上面的意思很明白了.這里再給他提煉一下:
1.hive是一個(gè)數(shù)據(jù)倉庫
2.hive基于hadoop。
總結(jié)為一句話:hive是基于hadoop的數(shù)據(jù)倉庫。

Hive是一種建立在Hadoop文件系統(tǒng)上的數(shù)據(jù)倉庫架構(gòu),并對(duì)存儲(chǔ)在HDFS中的數(shù)據(jù)進(jìn)行分析和管理;
**(也就是說對(duì)存儲(chǔ)在HDFS中的數(shù)據(jù)進(jìn)行分析和管理,我們不想使用手工,我們建立一個(gè)工具把,那么這個(gè)工具就可以是hive)
**

那么,我們?nèi)绾蝸矸治龊凸芾砟切?shù)據(jù)呢?  
Hive定義了一種類似SQL的查詢語言,被稱為HQL,對(duì)于熟悉SQL的用戶可以直接利用Hive來查詢數(shù)據(jù)。同時(shí),這個(gè)語言也允許熟悉 MapReduce 開發(fā)者們開發(fā)自定義的mappers和reducers來處理內(nèi)建的mappers和reducers無法完成的復(fù)雜的分析工作。Hive可以允許用戶編寫自己定義的函數(shù)UDF,來在查詢中使用。Hive中有3種UDF:User Defined Functions(UDF)、User Defined Aggregation Functions(UDAF)、User Defined Table Generating Functions(UDTF)?! ?br> 今天,Hive已經(jīng)是一個(gè)成功的Apache項(xiàng)目,很多組織把它用作一個(gè)通用的、可伸縮的數(shù)據(jù)處理平臺(tái)?! ?br> 當(dāng)然,Hive和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫有很大的區(qū)別,Hive將外部的任務(wù)解析成一個(gè)MapReduce可執(zhí)行計(jì)劃,而啟動(dòng)MapReduce是一個(gè)高延遲的一件事,每次提交任務(wù)和執(zhí)行任務(wù)都需要消耗很多時(shí)間,這也就決定Hive只能處理一些高延遲的應(yīng)用(如果你想處理低延遲的應(yīng)用,你可以去考慮一下Hbase)。同時(shí),由于設(shè)計(jì)的目標(biāo)不一樣,Hive目前還不支持事務(wù);不能對(duì)表數(shù)據(jù)進(jìn)行修改(不能更新、刪除、插入;只能通過文件追加數(shù)據(jù)、重新導(dǎo)入數(shù)據(jù));不能對(duì)列建立索引(但是Hive支持索引的建立,但是不能提高Hive的查詢速度。如果你想提高Hive的查詢速度,請(qǐng)學(xué)習(xí)Hive的分區(qū)、桶的應(yīng)用)。

hive與hbase的聯(lián)系與區(qū)別:
共同點(diǎn):
1.hbase與hive都是架構(gòu)在hadoop之上的。都是用hadoop作為底層存儲(chǔ)
區(qū)別:
2.Hive是建立在Hadoop之上為了減少M(fèi)apReduce jobs編寫工作的批處理系統(tǒng),HBase是為了支持彌補(bǔ)Hadoop對(duì)實(shí)時(shí)操作的缺陷的項(xiàng)目 。
3.想象你在操作RMDB數(shù)據(jù)庫,如果是全表掃描,就用Hive+Hadoop,如果是索引訪問,就用HBase+Hadoop 。
4.Hive query就是MapReduce jobs可以從5分鐘到數(shù)小時(shí)不止,HBase是非常高效的,肯定比Hive高效的多。
5.Hive本身不存儲(chǔ)和計(jì)算數(shù)據(jù),它完全依賴于HDFS和MapReduce,Hive中的表純邏輯。
6.hive借用hadoop的MapReduce來完成一些hive中的命令的執(zhí)行
7.hbase是物理表,不是邏輯表,提供一個(gè)超大的內(nèi)存hash表,搜索引擎通過它來存儲(chǔ)索引,方便查詢操作。
8.hbase是列存儲(chǔ)。
9.hdfs作為底層存儲(chǔ),hdfs是存放文件的系統(tǒng),而Hbase負(fù)責(zé)組織文件。
10.hive需要用到hdfs存儲(chǔ)文件,需要用到MapReduce計(jì)算框架。

點(diǎn)我查看 == > 原文鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容