HBase 和 Hive 的差別是什么,各自適用在什么場(chǎng)景中?

https://www.zhihu.com/question/21677041/answer/185664626

先放結(jié)論:Hbase和Hive在大數(shù)據(jù)架構(gòu)中處在不同位置:

  • Hbase主要解決實(shí)時(shí)數(shù)據(jù)查詢問(wèn)題

  • Hive主要解決數(shù)據(jù)處理和計(jì)算問(wèn)題,一般是配合使用。

一、區(qū)別:

  1. Hbase: Hadoop database 的簡(jiǎn)稱,也就是基于Hadoop數(shù)據(jù)庫(kù),是一種NoSQL數(shù)據(jù)庫(kù),主要適用于海量明細(xì)數(shù)據(jù)(十億、百億)的隨機(jī)實(shí)時(shí)查詢,如日志明細(xì)、交易清單、軌跡行為等。

  2. Hive:Hive是Hadoop數(shù)據(jù)倉(cāng)庫(kù),嚴(yán)格來(lái)說(shuō),不是數(shù)據(jù)庫(kù),主要是讓開(kāi)發(fā)人員能夠通過(guò)SQL來(lái)計(jì)算和處理HDFS上的結(jié)構(gòu)化數(shù)據(jù),適用于離線的批量數(shù)據(jù)計(jì)算。

  • 通過(guò)元數(shù)據(jù)來(lái)描述Hdfs上的結(jié)構(gòu)化文本數(shù)據(jù),通俗點(diǎn)來(lái)說(shuō),就是定義一張表來(lái)描述HDFS上的結(jié)構(gòu)化文本,包括各列數(shù)據(jù)名稱,數(shù)據(jù)類型是什么等,方便我們處理數(shù)據(jù),當(dāng)前很多SQL ON Hadoop的計(jì)算引擎均用的是hive的元數(shù)據(jù),如Spark SQL、Impala等;

  • 基于第一點(diǎn),通過(guò)SQL來(lái)處理和計(jì)算HDFS的數(shù)據(jù),Hive會(huì)將SQL翻譯為Mapreduce來(lái)處理數(shù)據(jù);

二、關(guān)系

在大數(shù)據(jù)架構(gòu)中,Hive和HBase是協(xié)作關(guān)系,數(shù)據(jù)流一般如下圖:

  1. 通過(guò)ETL工具將數(shù)據(jù)源抽取到HDFS存儲(chǔ);

  2. 通過(guò)Hive清洗、處理和計(jì)算原始數(shù)據(jù);

  3. HIve清洗處理后的結(jié)果,如果是面向海量數(shù)據(jù)隨機(jī)查詢場(chǎng)景的可存入Hbase

  4. 數(shù)據(jù)應(yīng)用從HBase查詢數(shù)據(jù);

h1.jpg

1. Hive中的表是純邏輯表,就只是表的定義等,即表的元數(shù)據(jù)。Hive本身不存儲(chǔ)數(shù)據(jù),它完全依賴HDFS和MapReduce。這樣就可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為為一張數(shù)據(jù)庫(kù)表,并提供完整的SQL查詢功能,并將SQL語(yǔ)句最終轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。 而HBase表是物理表,適合存放非結(jié)構(gòu)化的數(shù)據(jù)。

2. Hive是基于MapReduce來(lái)處理數(shù)據(jù),而MapReduce處理數(shù)據(jù)是基于行的模式;HBase處理數(shù)據(jù)是基于列的而不是基于行的模式,適合海量數(shù)據(jù)的隨機(jī)訪問(wèn)。

3. HBase的表是疏松的存儲(chǔ)的,因此用戶可以給行定義各種不同的列;而Hive表是稠密型,即定義多少列,每一行有存儲(chǔ)固定列數(shù)的數(shù)據(jù)。

4. Hive使用Hadoop來(lái)分析處理數(shù)據(jù),而Hadoop系統(tǒng)是批處理系統(tǒng),因此不能保證處理的低遲延問(wèn)題;而HBase是近實(shí)時(shí)系統(tǒng),支持實(shí)時(shí)查詢。

5. Hive不提供row-level的更新,它適用于大量append-only數(shù)據(jù)集(如日志)的批任務(wù)處理。而基于HBase的查詢,支持和row-level的更新。

6. Hive提供完整的SQL實(shí)現(xiàn),通常被用來(lái)做一些基于歷史數(shù)據(jù)的挖掘、分析。而HBase不適用與有join,多級(jí)索引,表關(guān)系復(fù)雜的應(yīng)用場(chǎng)景。

?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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