雖說随着數據處理實時性需求的不斷提升,更多新的計算框架出現,MapReduce的地位受到壓制,但是作為Hadoop原始計算框架,MapReduce的一些情況我們還是需要了解的。
MapReduce是一種編程模型,用于大規模數據集(大于1TB)的并行運算。概念"Map(映射)"和"Reduce(歸約)",和它們的主要思想,都是從函數式編程語言裡借來的,還有從矢量編程語言裡借來的特性。它極大地方便了編程人員在不會分布式并行編程的情況下,将自己的程序運行在分布式系統上。 當前的軟件實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定并發的Reduce(歸約)函數,用來保證所有映射的鍵值對中的每一個共享相同的鍵組。
一、優點
1.易于編程:以普通程序的編程方法加上使用MapReduce提供的接口,可以快速完成分布式程序的編寫;
2.良好的擴展性:計算資源得不到滿足時,可以通過簡單的增加計算機器來擴展計算能力;
3.高容錯性:如果一個任務所在計算節點挂了,上面的計算任務可以自動轉移到另外的節點上執行,即故障自動轉移,這個過程是内部完成的,無需人工幹預;
4.适合PB級别以上數據的離線處理。
二、缺點
1.實時計算:無法像mysql一樣在毫秒級或者秒級返回計算結果;
2.流式計算:流式計算的輸入數據是動态的,而MapReduce要求輸入數據是靜态的,已經持久化在存儲上的;
3.DAG(有向無環圖)計算:多個應用程序存在依賴關系,後一個應用程序的輸入為前一個的輸出,這種情況下,MapReduce的性能很低。因為MapReduce的每個階段的輸出結果都會先寫入到磁盤中,大量的磁盤IO會造成性能的急劇下降。
随着時代的變遷,雖說一些原始的東西可能會淘汰掉,但是一定會有我們需要學習的東西,就像MapReduce一樣,雖說被新的計算框架代替了許多,但是我有必要了解它的優缺點,好的東西變得更好,不好的就加以改之。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!