hadoop、hive、hbase的區別和應用場景

最近開始自學大數據,肯定免不了hadoop、hive、hbase這些東西。

此處把自己對這3個的理解記錄一下:

1、hadoop:它是一個分佈式計算+分佈式文件系統,前者其實就是MapReduce,後者是HDFS。後者可以獨立運行,前者可以選擇性使用,也可以不使用

2、hive:通俗的說是一個數據倉庫,倉庫中的數據是被hdfs管理的數據文件,它支持類似sql語句的功能,你可以通過該語句完成分佈式環境下的計算功能,hive會把語句轉換成MapReduce,然後交給hadoop執行。這裏的計算,僅限於查找和分析,而不是更新、增加和刪除。它的優勢是對歷史數據進行處理,用時下流行的說法是離線計算,因爲它的底層是MapReduce,MapReduce在實時計算上性能很差。它的做法是把數據文件加載進來作爲一個hive表(或者外部表),讓你覺得你的sql操作的是傳統的表。

3、hbase:通俗的說,hbase的作用類似於數據庫,傳統數據庫管理的是集中的本地數據文件,而hbase基於hdfs實現對分佈式數據文件的管理,比如增刪改查。也就是說,hbase只是利用hadoop的hdfs幫助其管理數據的持久化文件(HFile),它跟MapReduce沒任何關係。hbase的優勢在於實時計算,所有實時數據都直接存入hbase中,客戶端通過API直接訪問hbase,實現實時計算。由於它使用的是nosql,或者說是列式結構,從而提高了查找性能,使其能運用於大數據場景,這是它跟MapReduce的區別。

總結:
hadoop是hive和hbase的基礎,hive依賴hadoop,而hbase僅依賴hadoop的hdfs模塊。
hive適用於離線數據的分析,操作的是通用格式的(如通用的日誌文件)、被hadoop管理的數據文件,它支持類sql,比編寫MapReduce的java代碼來的更加方便,它的定位是數據倉庫,存儲和分析歷史數據
hbase適用於實時計算,採用列式結構的nosql,操作的是自己生成的特殊格式的HFile、被hadoop管理的數據文件,它的定位是數據庫,或者叫DBMS

 

最後補充一下:hive可以直接操作hdfs中的文件作爲它的表的數據,也可以使用hbase數據庫作爲它的表




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章