天天看點

HDFS與Hive、HBase之間到底是什麼關系

一、概念

HDFS

The Hadoop Distribute File System 分布式檔案系統 是一個被設計在運作商用硬體的一個分布式檔案系統。它與現有的分布式檔案系統有許多相似之處,但是與其他分布式檔案系統差別是顯著的。HDFS具有高度容錯性,設計用于部署在低成本硬體上。HDFS提供對應用程式資料的高吞吐量通路,适合具有大資料集的應用程式。HDFS放寬了一些POSIX要求,以實作對檔案系統的流式通路。

Hive

Hive是一個基于Apache Hadoop的資料倉庫基礎設施。Hadoop為在商用硬體上的資料存儲和處理提供了大規模的擴充和高容錯能力。

Hive的設計是為了友善資料彙總、特定查詢和分析大量資料。它提供SQL語句能讓使用者更容易地做特定查詢,彙總和資料分析。同時,Hive的SQL給使用者很多地方去內建他們自己自定義的功能做自定義分析,例如使用者定義函數UDFs(User Defined Functions).

Hive不是為了聯機事物處理而設計的,最适合是用于處理傳統資料倉庫任務。

HBase

HBase是一個Hadoop database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲叢集。

當你需要随機,實時讀寫通路大資料時,請使用Apache HBase。這個工程的目的是在商用硬體叢集上托管一個非常大的tables(數十億行數百萬列)。

HBase是Google Bigtable的開源實作,但是也有很多不同之處。比如:Google Bigtable利用GFS作為其檔案存儲系統,HBase利用Hadoop HDFS作為其檔案存儲系統;Google運作MAPREDUCE來處理Bigtable中的海量資料,HBASE同樣利用Hadoop MapReduce來處理HBase中的海量資料;Google Bigtable利用Chubby作為協同服務,HBASE利用Zookeeper作為對應。

HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系資料庫,它是一個适合于非結構化資料存儲的資料庫。另一個不同的是HBase基于列的而不是基于行的模式。

二、三者之間的關系:

HDFS是Hadoop的一個子產品,主要負責資料存儲,而Hadoop另一個模式是MapReduce,用于離線資料計算。

Hive依賴于Hadoop,實際存儲是依賴于Hadoop的HDFS子產品,計算依賴于Hadoop的Mapreduce子產品。

HBase則隻是依賴于Hadoop的HDFS子產品,是基于Hdfs實作對分布式資料檔案的管理,但是跟Mapreduce沒有關系,HBase的優勢在于實時計算,通過API直接通路HBase,實作實時計算,由于使用的是nosql模式(列式結構),進而提高了查找性能,使其能運用于大資料場景,這是它跟MapReduce的差別。

Hive的資料源既可以來自HDFS,也可以來自于HBase。

繼續閱讀