您好,登錄后才能下訂單哦!
MapReduce接口可能有多種不同的實現方式,需根據具體的計算環境來選擇
以Google的常用計算環境為例
1.機器配置 Linux dual-process x86 2-4GB Memory
2.網絡硬件 100/1000 MB/s, 平均整體二分帶寬少很多
3.集群 由數百、數千臺機器組成,機器故障很常見
4.存儲由連接到每個機器的廉價IDE磁盤提供,它們內部開發的分布式文件系統用于管理這些磁盤上的數據。文件系統使用副本在不可靠的硬件之上提供可用性和可靠性
5.用戶提交Job到調度系統,每個Job由一組Tasks組成,并由調度器將每個Task映射到機器中一組可用計算機上執行
Map調用被分布在多臺機器,輸入數據被自動劃分為M個分割,輸入分割之間沒有交互,可以在不同機器上并行處理。使用分區函數(e.g. hash(key) mod R),將中間鍵空間劃分為R個片段分發給Reduce并行調用,分區函數和分區數由用戶指定。用戶調用MapReduce函數的系列操作如下
1.Split Input FIles 將輸入文件按指定大小S(16~64MB,用戶通過可選參數指定)劃分為M個分割文件,然后在集群中啟動多個副本程序
2.Assign Tasks Master挑選空閑Worker節點并為其分配一個map task或reduce task
3.Parses K/V 被分配map task的worker讀取相關分割的內容,從輸入內容中解析鍵/值對并生成中間鍵/值對緩存于內存中
4.Written to Local Disk 緩存的中間鍵/值對,通過分區函數劃分為R個區域,定期寫到本地磁盤并將其相對位置返回給Master,Master再將這些位置信息傳給Worker
5.RPC Read and Sort 當Master將位置信息通知到Reduce Worker, Reduce Worker使用遠程過程調用從Map Worker的磁盤讀入緩存數據。當Reduce Worker讀入所有的中間數據按key排序,如果中間數據過大不適合在內存運算,可考慮使用外部排序
6.Iterates and Appended Reduce Worker對已排序的中間數據進行迭代,對于每一個唯一的中間鍵,它將與之對應的中間值集傳遞給用戶的Reduce函數。將Reduce函數的輸出Append到這個reduce分區的最終輸出文件
7.Completed 完成所有map和reduce任務后master喚醒用戶程序
--- edit by 云時代的運維開發(clouddevops)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。