大數(shù)據(jù)培訓(xùn)機(jī)構(gòu):淺談Hive vs. HBase
來源:
奇酷教育 發(fā)表于:
2019-04-03 09:34:53
大數(shù)據(jù)培訓(xùn)機(jī)構(gòu):淺談Hive vs HBase。對于剛接觸大數(shù)據(jù)分析的用戶來說,要想?yún)^(qū)分Hive與HBase是有一定難度的。本文將嘗試從其各自的
大數(shù)據(jù)培訓(xùn)機(jī)構(gòu) :淺談Hive vs. HBase。對于剛接觸
大數(shù)據(jù)分析 的用戶來說,要想?yún)^(qū)分Hive與HBase是有一定難度的。本文將嘗試從其各自的定義、特點(diǎn)、限制、應(yīng)用場景等角度來進(jìn)行分析,以作拋磚引玉之用。
Hive是什么?
Apache Hive是一個(gè)構(gòu)建于Hadoop(分布式系統(tǒng)基礎(chǔ)架構(gòu))頂層的數(shù)據(jù)倉庫,注意這里不是數(shù)據(jù)庫。Hive可以看作是用戶編程接口,它本身不存儲和計(jì)算數(shù)據(jù);它依賴于HDFS(
Hadoop 分布式文件系統(tǒng))和MapReduce(一種編程模型,映射與化簡;用于大數(shù)據(jù)并行運(yùn)算)。其對HDFS的操作類似于SQL—名為HQL,它提供了豐富的SQL查詢方式來分析存儲在HDFS中的數(shù)據(jù);HQL經(jīng)過編譯轉(zhuǎn)為MapReduce作業(yè)后通過自己的SQL 去查詢分析需要的內(nèi)容;這樣一來,即使不熟悉MapReduce 的用戶也可以很方便地利用SQL 語言查詢、匯總、分析數(shù)據(jù)。而MapReduce開發(fā)人員可以把己寫的mapper 和reducer 作為插件來支持Hive 做更復(fù)雜的數(shù)據(jù)分析。
HBase是什么?
Apache HBase是運(yùn)行于HDFS頂層的NoSQL(=Not Only SQL,泛指非關(guān)系型的數(shù)據(jù)庫)數(shù)據(jù)庫系統(tǒng)。區(qū)別于Hive,HBase具備隨即讀寫功能,是一種面向列的數(shù)據(jù)庫。HBase以表的形式存儲數(shù)據(jù),表由行和列組成,列劃分為若干個(gè)列簇(row family)。例如:一個(gè)消息列簇包含了發(fā)送者、接受者、發(fā)送日期、消息標(biāo)題以及消息內(nèi)容。每一對鍵值在HBase會被定義為一個(gè)Cell,其中,鍵由row-key(行鍵),列簇,列,時(shí)間戳構(gòu)成。而在HBase中每一行代表由行鍵標(biāo)識的鍵值映射組合。Hbase目標(biāo)主要依靠橫向擴(kuò)展,通過不斷增加廉價(jià)的商用服務(wù)器,來增加計(jì)算和存儲能力。
特性
遵從JDBC的Hive不但可以讓具SQL知識的用戶來間接執(zhí)行MapReduce作業(yè),同時(shí)里面也整合了目前基于SQL的操作工具。不過,由于默認(rèn)的數(shù)據(jù)讀取是全表遍歷的,其時(shí)間的耗費(fèi)也不可避免地相對較大。盡管如此,不盡相同的Hive分區(qū)方法,其遍歷讀取的數(shù)據(jù)量也是能夠有所限制的。Hive分區(qū)允許對存儲在獨(dú)立文件上的數(shù)據(jù)進(jìn)行篩選查詢,返回的是篩選后的數(shù)據(jù)。例如針對日期的日志文件訪問,前提是該類文件的文件名包含日期信息。
HBase以鍵值對的形式儲存數(shù)據(jù)。其包含了4種主要的數(shù)據(jù)操作方式:
添加或更新數(shù)據(jù)行
掃描獲取某范圍內(nèi)的cells
為某一具體數(shù)據(jù)行返回對應(yīng)的cells
從數(shù)據(jù)表中刪除數(shù)據(jù)行/列,或列的描述信息
列信息可用于獲取數(shù)據(jù)變動前的取值(透過HBase壓縮策略可以刪除列信息歷史記錄來釋放存儲空間)。
限制
Hive不支持常規(guī)的SQL更新語句,如:數(shù)據(jù)插入,更新,刪除。因?yàn)槠鋵?a href="http://www.diabetesworldflight.com">數(shù)據(jù)分析 的操作是針對整個(gè)數(shù)據(jù)表的。同時(shí)該特點(diǎn)也使得數(shù)據(jù)查詢用時(shí)以數(shù)分鐘甚至數(shù)小時(shí)來進(jìn)行計(jì)算。此外,其MapReduce轉(zhuǎn)換過程必須遵從預(yù)定義的轉(zhuǎn)換規(guī)則。
HBase的數(shù)據(jù)查詢是有一套屬于自己類似SQL的操作語言的,這個(gè)需要一定的學(xué)習(xí)來掌握。此外,要運(yùn)行HBase,ZooKeeper是需要配備的。ZooKeeper是一個(gè)針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護(hù)、名字服務(wù)、分布式同步、組服務(wù)等。
應(yīng)用舉例
Hive適用于網(wǎng)絡(luò)日志等數(shù)據(jù)量大、靜態(tài)的數(shù)據(jù)查詢。例如:用戶消費(fèi)行為記錄,網(wǎng)站訪問足跡等。但是不適用于聯(lián)機(jī)實(shí)時(shí)在線查詢的場合。
HBase能在大數(shù)據(jù)聯(lián)機(jī)實(shí)時(shí)查詢場合大展身手。例如:Fackbook就利用其對用戶間的傳送的消息進(jìn)行聯(lián)機(jī)實(shí)時(shí)分析。
小結(jié)
Hive與HBase兩者是基于Hadoop上不同的技術(shù)。Hive是一種能執(zhí)行MapReduce作業(yè)的類SQL編程接口,Hbase是一種非關(guān)系型的數(shù)據(jù)庫結(jié)構(gòu)。結(jié)合這兩者自身的特點(diǎn),互相結(jié)合使用或許能收到相得益彰的效果。例如:利用Hive處理靜態(tài)離線數(shù)據(jù),利用HBase進(jìn)行聯(lián)機(jī)實(shí)時(shí)查詢,而后對兩者間的結(jié)果集進(jìn)行整合歸并,從而使得數(shù)據(jù)完整且永葆青春,為進(jìn)一步的商業(yè)分析提供良好支持。