大數據之hadoop / hive / hbase 的區別是什麼?有什麼應用場景?

@[toc]java


1. hadoop

它是一個分佈式計算+分佈式文件系統,前者其實就是 MapReduce,後者是 HDFS 。後者能夠獨立運行,前者能夠選擇性使用,也能夠不使用sql


2. hive

通俗的說是一個數據倉庫,倉庫中的數據是被hdfs管理的數據文件,它支持相似sql語句的功能,你能夠經過該語句完成分佈式環境下的計算功能,hive會把語句轉換成MapReduce,而後交給hadoop執行。這裏的計算,僅限於查找和分析,而不是更新、增長和刪除。數據庫

它的優點是對歷史數據進行處理,用時下流行的說法是離線計算,由於它的底層是MapReduce,MapReduce在實時計算上性能不好。它的作法是把數據文件加載進來做爲一個hive表(或者外部表),讓你以爲你的sql操做的是傳統的表。markdown


3. hbase

通俗的說,hbase的做用相似於數據庫,傳統數據庫管理的是集中的本地數據文件,而hbase基於hdfs實現對分佈式數據文件的管理,好比增刪改查。也就是說,hbase只是利用hadoop的hdfs幫助其管理數據的持久化文件(HFile),它跟MapReduce沒任何關係。nosql

hbase的優點在於實時計算,全部實時數據都直接存入hbase中,客戶端經過API直接訪問hbase,實現實時計算。因爲它使用的是nosql,或者說是列式結構,從而提升了查找性能,使其能運用於大數據場景,這是它跟MapReduce的區別。分佈式


總結

hadoop是hive和hbase的基礎,hive依賴hadoop,而hbase僅依賴hadoop的hdfs模塊。oop

hive適用於離線數據的分析,操做的是通用格式的(如通用的日誌文件)、被hadoop管理的數據文件,它支持類sql,比編寫MapReduce的java代碼來的更加方便,它的定位是數據倉庫,存儲和分析歷史數據。性能

hbase適用於實時計算,採用列式結構的nosql,操做的是本身生成的特殊格式的HFile、被hadoop管理的數據文件,它的定位是數據庫,或者叫DBMS。大數據

hive能夠直接操做hdfs中的文件做爲它的表的數據,也能夠使用hbase數據庫做爲它的表。spa

相關文章
相關標籤/搜索