Hadoop學習之HBase和Hive的區別


  Hive是為簡化編寫MapReduce程序而生的,使用MapReduce做過數據分析的人都知道,很多分析程序除業務邏輯不同外,程序流程基本一樣。在這種情況下,就需要Hive這樣的用戶編程接口。Hive本身不存儲和計算數據,它完全依賴於HDFS和MapReduce,Hive中的表純邏輯表,就是些表的定義等,也就是表的元數據。使用SQL實現Hive是因為SQL大家都熟悉,轉換成本低,類似作用的Pig就不是SQL。  
  HBase為查詢而生的,它通過組織起節點內所有機器的內存,提供一個超大的內存Hash表,它需要組織自己的數據結構,包括磁盤和內存中的,而Hive是不做這個的,表在HBase中是物理表,而不是邏輯表,搜索引擎使用它來存儲索引,以滿足查詢的實時性需求簡單來說hive用來批量處理數據,HBase用來快速索引數據。   
  HBase是一個分布式的基於列存儲的非關系型數據庫。HBase的查詢效率很高,主要由於查詢和展示結果。  
hive是分布式的關系型數據庫。主要用來並行分布式 處理 大量數據。hive中的所有查詢除了"select * from table;"都是需要通過Map\Reduce的方式來執行的。由於要走Map\Reduce,即使一個只有1行1列的表,如果不是通過select * from table;方式來查詢的,可能也需要8、9秒。但hive比較擅長處理大量數據。當要處理的數據很多,並且Hadoop集群有足夠的規模,這時就能體現出它的優勢。 
通過hive的存儲接口,hive和Hbase可以整合使用。  
  Hadoop中的MapReduce是一個使用簡易的軟件框架,基於它寫出來的應用程序能夠運行在由上千個商用機器組成的大型集群上,並以一種可靠容錯的式並行處理上T級別的數據集。MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Reduce(化簡)",和他們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。他極大地方便了編程人員在不會分布式並行編程的情況下,將自己的程序運行在分布式系統上。當前的軟件實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定並發的Reduce(化簡)函數,用來保證所有映射的鍵值對中的每一個共享相同的鍵組   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM