如何區分Hive與HBase

  如何區分Hive與HBase,要想區分Hive與HBase是有必定難度的。下面是給你們整理的關於從其各自的定義、特色、限制、應用場景等角度來進行分析,以幫助你們更好的理解、區分Hive和HBase。
  HBase是什麼?
  ApacheHBase是運行於HDFS頂層的NoSQL(NotOnlySQL,泛指非關係型的數據庫)數據庫系統。區別於Hive,HBase具有隨即讀寫功能,是一種面向列的數據庫。HBase以表的形式存儲數據,表由行和列組成,列劃分爲若干個列簇(rowfamily)。例如:一個消息列簇包含了發送者、接受者、發送日期、消息標題以及消息內容。每一對鍵值在HBase會被定義爲一個Cell,其中,鍵由row-key(行鍵),列簇,列,時間戳構成。而在HBase中每一行表明由行鍵標識的鍵值映射組合。Hbase目標主要依靠橫向擴展,經過不斷增長廉價的商用服務器,來增長計算和存儲能力。
  Hive是什麼?
  ApacheHive是一個構建於Hadoop(分佈式系統基礎架構)頂層的數據倉庫,注意這裏不是數據庫。Hive能夠看做是用戶編程接口,它自己不存儲和計算數據;它依賴於HDFS(Hadoop分佈式文件系統)和MapReduce(一種編程模型,映射與化簡;用於大數據並行運算)。其對HDFS的操做相似於SQL—名爲HiveQL,簡稱HQL,它提供了豐富的SQL查詢方式來分析存儲在HDFS中的數據;HQL通過編譯轉MapReduce做業後經過本身的SQL去查詢分析須要的內容;這樣一來,即便不熟悉MapReduce的用戶也能夠很方便地利用SQL語言查詢、彙總、分析數據,下降學習成本,提升工做效率。而MapReduce開發人員能夠把己寫的mapper和reducer做爲插件來支持Hive作更復雜的數據分析。
  特性
  聽從JDBC的Hive不但可讓具SQL知識的用戶來間接執行MapReduce做業,同時裏面也整合了目前基於SQL的操做工具。不過,因爲默認的數據讀取是全表遍歷的,其時間的耗費也不可避免地相對較大。儘管如此,不盡相同的Hive分區方法,其遍歷讀取的數據量也是可以有所限制的。Hive分區容許對存儲在獨立文件上的數據進行篩選查詢,返回的是篩選後的數據。例如針對日期的日誌文件訪問,前提是該類文件的文件名包含日期信息。
  HBase以鍵值對的形式儲存數據。其包含了4種主要的數據操做方式:
  1.添加或更新數據行
  2.掃描獲取某範圍內的cells
  3.爲某一具體數據行返回對應的cells
  4.從數據表中刪除數據行/列,或列的描述信息
  列信息可用於獲取數據變更前的取值(透過HBase壓縮策略能夠刪除列信息歷史記錄來釋放存儲空間)。
  限制
  Hive不支持常規的SQL更新語句,如:數據插入,更新,刪除。由於其對數據的操做是針對整個數據表的。同時該特色也使得數據查詢用時以數分鐘甚至數小時來進行計算。此外,其MapReduce轉換過程必須聽從預約義的轉換規則。
  HBase的數據查詢是有一套屬於本身相似SQL的操做語言的,這個須要必定的學習來掌握。此外,要運行HBase,ZooKeeper是須要配備的。ZooKeeper是一個針對大型分佈式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、分佈式同步、組服務等。
  應用舉例
  Hive適用於離線網絡日誌等數據量大、靜態的數據查詢。例如:用戶消費行爲記錄,網站訪問足跡等。可是不適用於聯機實時在線查詢的場合。
  HBase能在大數據聯機實時查詢場合大展身手。例如:Fackbook就利用其對用戶間的傳送的消息進行聯機實時分析。數據庫

相關文章
相關標籤/搜索