Hbase是什么?
Hbase是一個架構在Hdfs文件系統(tǒng)上的列式存儲,是開源的,分布式,面向列的數(shù)據(jù)庫。適合于非結構化數(shù)據(jù)存儲的數(shù)據(jù)庫。
Hbase是一個高可靠、高性能、面向列、可伸縮的分布式存儲系統(tǒng),可以在廉價的PC Server搭建大規(guī)模結構化存儲集群.
1,HBase位于Hadoop生態(tài)系統(tǒng)的結構化存儲層。
2,HDFS作為其底層的文件存儲
3,MapReduct為Hbase提供高性能的計算能力
4,Zookeeper為HBase提供了穩(wěn)定的服務和failover的能力
Hive是什么?
hive是一個基于Hadoop的一個數(shù)據(jù)倉庫工具??梢詫⒔Y構化數(shù)據(jù)映射為一張數(shù)據(jù)庫表,并且提供sql的查詢能力,可以將sql換換為MapReduce任務進行。
下面我們看看Hive的架構圖:
1,用戶接口,hive主要有三個接口,CLI(CLI啟動的時候會同時氣筒一個Hive的副本),Client(hive的客戶端,連結hive server),web UI(通過瀏覽器訪問)
2,元數(shù)據(jù)存儲,hive將元數(shù)據(jù)存儲在數(shù)據(jù)庫中如:mysql。
3,Driver(解釋器、編譯器、優(yōu)化器、執(zhí)行器):完成詞法分析,語法分析,優(yōu)化,編譯,優(yōu)化以及查詢計劃的生成,隨后由MapReduce使用。
4,Hadoop ,hive的數(shù)據(jù)存儲在Hdfs中。大部分的查詢由MapReduce完成。
Hbase
上面我們分別看了Hbase的特點,hive的特點,那么Hbase和Hive的差別是什么以及各自的使用場景是什么?
Hbase和Hive 二者都是以Hdfs為文件存儲。
Hbase支持列擴展,可以對單元格修改。采取K-V的設計,因此查詢效率比較高,一般用于延遲忍耐低的場景;還有就是經常需要擴展屬性,修改屬性場景。
Hbase的查詢一般通過命令窗口進行,語句比較負責,但是hive的采用標準的sql語法,門檻低,上手簡單。當然Hbase也有Phoenix可以去支持 sql這樣的語法操作。
下面看看hbase具體的應用場景:
千萬并發(fā)、PB存儲、KV基礎存儲、動態(tài)列、強同步、稀疏表、二級索引、SQL
對象存儲:頭條類、新聞類的的新聞、網(wǎng)頁、圖片存儲在HBase之中,一些病毒公司的病毒庫也是存儲在HBase之中。
時序數(shù)據(jù):HBase之上有OpenTSDB模塊,可以滿足時序類場景的需求。
推薦畫像:用戶的畫像,是一個比較大的稀疏矩陣。螞蟻的風控就是構建在HBase之上。
時空數(shù)據(jù):主要是軌跡、氣象網(wǎng)格之類,滴滴打車的軌跡數(shù)據(jù)主要存在HBase之中,另外在技術所有大一點的數(shù)據(jù)量的車聯(lián)網(wǎng)企業(yè),數(shù)據(jù)都是存在HBase之中
CubeDB OLAP:Kylin一個cube分析工具,底層的數(shù)據(jù)就是存儲在HBase之中,不少客戶自己基于離線計算構建cube存儲在hbase之中,滿足在線報表查詢的需求。
消息/訂單:在電信領域、銀行領域,不少的訂單查詢底層的存儲,另外不少通信、消息同步的應用構建在HBase之上。
消息/訂單:在電信領域、銀行領域,不少的訂單查詢底層的存儲,另外不少通信、消息同步的應用構建在HBase之上。
Hive 不能支持列擴展,支持追加,好像在新版本中可以支持修改,但是效率比較低。Hive處理的數(shù)據(jù)的吞吐量高,文件越大,hive的優(yōu)勢就約明顯。一半用于 延遲忍耐高的場景。
下面再來看看Hive的具體使用場景:
1,分析網(wǎng)絡日志。
2,ETL清洗數(shù)據(jù)。
3,構建數(shù)據(jù)倉庫。
4,數(shù)據(jù)挖掘
最后在總結:Hbase和Hive本身都不能存儲數(shù)據(jù)。二者都是對Hdfs上的文件在做了一次組織。從而適應不同的場景。Hbase 在與查詢,動態(tài)列場景更有優(yōu)勢,但是無法進行數(shù)據(jù)分析和挖掘。二Hive本身無法在低延遲的場景下使用。Hive可以處理大量數(shù)據(jù)的ETL清洗。構建統(tǒng)一的標準的數(shù)據(jù)倉庫,從而提供基礎數(shù)據(jù),共上層數(shù)據(jù)分析。所以hive更加偏向于數(shù)據(jù)分析。