MapReduce接口可能有多種不同的實現方式,需根據具體的計算環(huán)境來選擇
海鹽網站建設公司創(chuàng)新互聯(lián)建站,海鹽網站設計制作,有大型網站制作公司豐富經驗。已為海鹽1000+提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿網站建設要多少錢,請找那個售后服務好的海鹽做網站的公司定做!
以Google的常用計算環(huán)境為例
1.機器配置 Linux dual-process x86 2-4GB Memory
2.網絡硬件 100/1000 MB/s, 平均整體二分帶寬少很多
3.集群 由數百、數千臺機器組成,機器故障很常見
4.存儲由連接到每個機器的廉價IDE磁盤提供,它們內部開發(fā)的分布式文件系統(tǒng)用于管理這些磁盤上的數據。文件系統(tǒng)使用副本在不可靠的硬件之上提供可用性和可靠性
5.用戶提交Job到調度系統(tǒng),每個Job由一組Tasks組成,并由調度器將每個Task映射到機器中一組可用計算機上執(zhí)行
Map調用被分布在多臺機器,輸入數據被自動劃分為M個分割,輸入分割之間沒有交互,可以在不同機器上并行處理。使用分區(qū)函數(e.g. hash(key) mod R),將中間鍵空間劃分為R個片段分發(fā)給Reduce并行調用,分區(qū)函數和分區(qū)數由用戶指定。用戶調用MapReduce函數的系列操作如下
1.Split Input FIles 將輸入文件按指定大小S(16~64MB,用戶通過可選參數指定)劃分為M個分割文件,然后在集群中啟動多個副本程序
2.Assign Tasks Master挑選空閑Worker節(jié)點并為其分配一個map task或reduce task
3.Parses K/V 被分配map task的worker讀取相關分割的內容,從輸入內容中解析鍵/值對并生成中間鍵/值對緩存于內存中
4.Written to Local Disk 緩存的中間鍵/值對,通過分區(qū)函數劃分為R個區(qū)域,定期寫到本地磁盤并將其相對位置返回給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分區(qū)的最終輸出文件
7.Completed 完成所有map和reduce任務后master喚醒用戶程序
--- edit by 云時代的運維開發(fā)(clouddevops)