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