數據存儲與分析
要實現對多個磁盤數據的並行讀寫 需要解決的很多問題
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才能夠進行失敗監測,各個任務間彼此獨立。