hadoop/hive/hbase 简单区别及应用场景
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數據庫作為它的表
HDFS和Hbase究竟是什么?
HDFS容錯率很高,即便是在系統崩潰的情況下,也能夠在節點之間快速傳輸數據。HBase是非關系數據庫,是開源的Not-Only-SQL數據庫,它的運行建立在Hadoop上。HBase依賴于CAP定理(Consistency, Availability, and Partition Tolerance)中的CP項。
HDFS最適于執行批次分析。然而,它最大的缺點是無法執行實時分析,而實時分析是信息科技行業的標配。HBase能夠處理大規模數據,它不適于批次分析,但它可以向Hadoop實時地調用數據。
HDFS和HBase都可以處理結構、半結構和非結構數據。因為HDFS建立在舊的MapReduce框架上,所以它缺乏內存引擎,數據分析速度較慢。相反,HBase使用了內存引擎,大大提高了數據的讀寫速度。
HDFS執行的數據分析過程是透明的。HBase與之相反,因為其結構基于NoSQL,它通過在不同的關鍵字下進行排序而獲取數據。
通過實例來加強對HDFS和HBase的理解
實例1
Cloudera對歐洲銀行使用HBase的過程進行優化
HBase是實時數據處理環境的最佳典范。我們的一個客戶是某歐洲著名銀行,下面要舉的就是這個客戶的例子,恰到好處的說明了問題。我們同時使用了Apache Storm和Apache Hbase,來分析應用服務器和網頁服務器上的日志數據,想以此得到一些新發現。因為單位時間內我們需要處理大量的數據,所以我們最終決定使用HBase而不是HDFS。HDFS不能處理高速流動的數據。結果令人震驚,搜索時間從3天變成了3分鐘。
實例2
使用HDFS和MapReduce作為全球快速消費品巨頭的分析方案
我們的一位客戶是全球飲料業巨頭,它要求我們做一些批次分析,這些分析必須精確到某一特定倉庫的進出量。分析中需要使用一些迭代分析和序列分析。HDFS和MapReduce就很適應這種工作需求,表現要比建立在HBase上的Hive要好。MapReduce解決數據預處理,將數據準備好作下一步的分析。之后Hive接管任務,去做顧客分析。結果非常好,出顧客分析報告的時間由3天縮短為3小時。
HDFS 和 HBase 比較表格
總結
以上是生活随笔為你收集整理的hadoop/hive/hbase 简单区别及应用场景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: #Hive报错 WritableStri
- 下一篇: JP