數據存儲與分析

要實現對多個磁盤數據的並行讀寫  需要解決的很多問題

1  硬件故障問題。硬件多了,發生故障的概率變大。避免數據丟失的是備份。RAID(冗餘磁盤陣列),HDFS

2 大多數分析任務需要以某種方式結合大部分數據共同完成分析任務,一個磁盤讀取得數據可能需要和另外的99個磁盤中

  讀取的數據結合使用,各種分佈式系統允許結合多個來源的數據並實現分析,但保證其正確性是一個很大的挑戰,

MapReduce提出一個編程模型,該模型將上述磁盤讀寫問題進行抽象,轉換為一個對數據集(由 鍵/值 對組成)的計算。

該計算由map和reduce兩部分組成,而只有這兩部分提供對外的接口。與HDFS類似,MapReduce自身也有較高的可靠性。

 

與其它系統比

mapreduce 每個查詢至少處理整個數據集或者數據集的很大部分。改變了對傳統數據的看法,對存放在磁帶什麼上面的數據賦予了

創新的機會。

 

關係型數據庫管理系統,為什麼使用mapreduce

(1)磁盤的發展:尋址(將磁頭移動到特定磁盤位置進行讀寫操作的過程)是導致磁盤操作延遲的主要原因,而傳輸速率取決於磁盤的帶寬。

如果數據訪問存在大量尋址,那麼讀取大量數據集的時間更長。

(2)如果數據庫更新的話,只更新一小部分,那麼傳統的B樹(關係數據庫的結構,受限於尋址的比例)更有優勢,但是數據庫更新大量數據的時候,

B樹效率會比MapReduce低很多,因為需要使用 “排序/合併”(sort/merge)來重建數據庫。

(3)結構化程度不同的數據的處理。結構化(數據的格式如XML),半結構化(數據鬆散,可能有格式,但總被忽略,例如電子表格),

非結構化(沒有內部結構,文本圖像什麼的).Mapduce 對非結構化和半結構化的處理有效,因為在處理數據的時候才對數據進行解釋,MapReduce輸入的

鍵和值並不是數據固有的屬性,由分析人員選擇的。關係型數據庫規範,為了保證完整不冗餘 ,mapreduce的核心假設之一就是它可以進行高速的流式讀寫操作。web服務器的日誌就是非規範化的,so 適合分析日誌。

 

網格計算

高性能計算是把作業分散到集羣的各個機器上,這個機器訪問由存儲區域網絡(SAN)組織的共享文件系統,數據節點需要訪問大量地數據,那麼計算節點會

因為網絡帶寬的瓶頸問題而空閒下來等待數據。而MapDuce會盡量在計算節點上存儲數據,以便實現數據本地快速訪問。

數據本地化(data locality)特徵是MapReduce的核心特徵。 

大規模分佈式的環境下,協調各個進程間的執行是一個很大的挑戰。最難得是合理的處理系統部分失效的問題,在不知道遠程的進程是否已經失效的

情況下,還要繼續完成整個計算。而Mapduce 讓程序員無需考慮這個問題,因為自身的系統能夠監測到失敗的Map或者Reduce任務,讓正常運行的

機器重新執行這些失敗的任務,因為採用了 無共享(shared-nothing)框架,所以MapReduce才能夠進行失敗監測,各個任務間彼此獨立。