hadoop vs 其它系統

hadoop作為數據存儲、分析的分佈式系統對比其它系統(如SQL數據庫、網格計算等)有哪些優勢。那麼下面各自介紹一些它們的不同點。

SQL數據庫

我們知道hadoop是一個大數據處理的框架,但是當下數據處理與查詢的主力依然是各個廠家的關係型數據庫(SQL數據庫)。那麼對比SQL數據庫hadoop有什麼優勢:

1、SQL數據庫處理的都是結構化數據,而hadoop是支持非結構化數據的處理,比如文本、圖像等。從這個角度講,hadoop對比SQL數據庫多了一個通用的模式。

2、向外擴展替代向上擴展。原理上hadoop和SQL數據庫是可以互相做彌補的,因為SQL只是一種查詢語言,它可以把hadoop做為它的一個引擎支持。但是現階段,SQL數據庫通俗的講就是幾個主要產商的關係型數據庫產品(如Oracle、mysql、SQLserver等)。他們這些產品現階段無法做到滿足hadoop的分佈式設計方面的需求。所以SQL數據庫現階段只能更適合業務系統當中數據集的點查詢、更新以及數據的插入。而hadoop更適合那種一次寫入,多次進行批處理的大數據集的應用。

在性能擴展上,關係型數據庫更容易進行向上擴展,通過提升機器的性能,容量,計算速率來適應更大量的數據集。而Hadoop通過可以通過增加集群的機器進行向外擴展,從而提高整體的計算性能。

3、利用鍵值對替換表關係。關係型數據庫的數據都是按照特定的表結構存儲在表中,而Hadoop中,數據來源不管是結構化數據或者非結構化數據,最後都轉換為鍵值對進行處理。

4、利用MapReduce函數編程來替代SQL語句查詢獲取數據結果。我們知道關係型數據庫是利用編寫SQL語句,然後數據庫引擎解析語句後獲取想要數據的一個過程。而hadoop則是利用編程和腳本對數據進行相應的處理後返回結果,在這處理過程中,你可以根據實際需求建立一些複雜的統計模型。

但是在實際應用中會發現,MapReduce計算模型並不適合那種對數據集中幾條數據進行隨機讀寫的在線事務處理模式。它更適合進行離線大數據集的數據分析。因此,它們兩者是互補的關係,可以利用hadoop作為關係型數據庫的數據倉庫,來提高大數據分析的能力。


hadoop vs 其它系統


網格計算

網格計算的概念:它是分佈式計算當中的一種,它研究如何把一個需要非常大計算能力的任務劃分成一個個子任務,然後分配給許多計算機進行處理,然後把這些計算結果綜合起來得到最終結果。比如現在利用網格計算使用世界成千上萬志願者的閒置的CPU進行計算,通過互聯網來分析外太空的電訊號,尋找隱藏黑洞,搜索外星生命體。

Hadoop是在近幾年開始快速發展起來的一種分佈式框架。在它出現之前,網格計算一直是處理大數據集問題上使用的主要方法和工具。它常用消息傳遞接口提供的API來處理大數據計算。它的設計思想是將計算任務分散到各個集群的計算機上,集群計算機節點通過訪問共享文件系統中進行數據的獲取,然後在各自節點進行計算,最後再彙總結果。

乍一看,它的設計思路怎麼和MapReduce模型一樣。但是當數據集達到PB級別時,網格計算的一個弊端就出現了,那是網格計算的數據集都存放在一個共享文件系統當中,那麼獲取大數據集時會受到網絡帶寬的限制,讀取數據變慢,導致很多集群節點只能空閒等待數據。而hadoop卻不存在這種問題,因為hadoop增加了一個HDFS的分佈式的文件系統。所有的計算的數據都在本機節點上,即可在集群節點上完成本地化計算。

而且,Hadoop 的MapReduce 卻是一個高度抽象的並行編程模型,它將分佈式並行編程抽象為兩個原語操作,即map 操作和reduce 操作,開發人員只需要簡單地實現相應的接口即可,完全不用考慮底層數據流、容錯、程序的並行執行等細節。這種設計無疑大大降低了開發分佈式並行程序的難度。



分享到:


相關文章: