唐峰 杜宏宇 蔡家軒 韓佳琦 孫鴻羽
【摘 要】在所有大數(shù)據(jù)技術中,MapReduce由于在批處理大規(guī)模數(shù)據(jù)方面的卓越性能,已經(jīng)成為現(xiàn)今大數(shù)據(jù)的核心算法,但使用者對MapReduce的理解仍是不全面的,甚至是錯誤的?;诖耍疚膶apReduce進行了客觀分析并提出了在水產(chǎn)行業(yè)中的應用前景。
【關鍵詞】MapReduce;水產(chǎn)行業(yè);大數(shù)據(jù)
中圖分類號: S951.2;TP311.13 文獻標識碼: A 文章編號: 2095-2457(2019)17-0115-002
DOI:10.19694/j.cnki.issn2095-2457.2019.17.054
MapReduce Computation Model and its Application in Aquatic Agriculture
TANG Feng DU Hong-yu CAI Jia-xuan HAN Jia-qi SUN Hong-yu
(School of mechanical engineering,suzhou university of science and technology,Suzhou Jiangsu 215009,China)
【Abstract】Among all the big data technology,MapReduce has been Core Algorithm Ways in big data due to its excellent performance in batching large-scale data.But the understanding of users are one-sided,even its wrong.On the basis,this paper makes an Objective analysis for MapReduce and puts forward the application prospect in Fishing industry.
【Key words】MapReduce;Big Data;Aquatic agriculture
0 前言
我國的水產(chǎn)農(nóng)業(yè)正在向“農(nóng)業(yè)4.0”方向發(fā)展。MapReduce計算范型作為一種典型的批處理計算范型,已經(jīng)在很多領域獲得了極為廣泛的應用。與傳統(tǒng)的MPP架構(gòu)相比,MapReduce更適合非結(jié)構(gòu)化數(shù)據(jù)的ETL處理類操作,且其可擴展性及容錯性明顯占優(yōu)[3]。MapReduce提供了簡潔的編程接口及完善的容錯處理機制,使得大規(guī)模并發(fā)處理海量數(shù)據(jù)成為可能。因此充分了解MapReduce已成為應用開發(fā)者的必然選擇。
MapReduce分布式計算框架在2004年被首次提出,它不單單是一種分布式計算模型,同時也是以大規(guī)模商業(yè)電腦(成千臺機器)為基礎的一整套批處理計算框架。MapReduce可以很輕易處理即使PB級規(guī)模的數(shù)據(jù),并通過提供簡單應用接口的方式,使得在設計分布式計算系統(tǒng)時所需要考慮的,如系統(tǒng)容錯以及任務調(diào)度等復雜問題很好協(xié)調(diào)封裝起來,這樣就大大降低了應用開發(fā)者的工作強度與難度,只需保證業(yè)務邏輯無錯誤即可完成任務。
1 MapReduce計算模型
在處理各種各樣的大數(shù)據(jù)問題時,會要求程序員去處理與分布式計算相關的種種讓人頭疼的問題,比如,如何使計算并行化,如何處理失敗等。這些問題讓原本簡單直接的任務變得復雜,而MapReduce計算模型的提出,則是對所面臨的大數(shù)據(jù)問題進行分析和總結(jié)后所作的一次天才的抽象。MapReduce把面臨的分布式計算問題帶來的復雜度解耦成兩個部分。
(1)經(jīng)MapReduce計算模型抽象的計算任務。
(2)支持MapReduce的分布式計算框架。
通過這種抽象,業(yè)務邏輯的實現(xiàn)者只需要按照MapReduce計算模型來實現(xiàn)自己的業(yè)務邏輯,并不需要關心分布式計算所帶來的種種問題。計算框架則會考慮分布式計算的種種挑戰(zhàn),由有經(jīng)驗的精通分布式計算的程序員來實現(xiàn)。
MapReduce作為一個普遍適用的分布式計算模型,其核心是把任務分解成一個個子任務,通過計算出子任務的結(jié)果,再加以合并來得出最終結(jié)果。MapReduce計算模型框架構(gòu)架如圖1所示。
從圖1可以看出,當MapReduce的調(diào)用函數(shù)在被用戶程序執(zhí)行時,其運作流程如下:
(1)MapReduce框架通過把應用輸入的數(shù)據(jù)劃分為若干個數(shù)據(jù)塊(大多為64MB),就能夠運行位于集群中不同機器上的各個程序。
(2)在這些程序當中,存在著一個且唯一一個主控的Master程序和若干工作程序(Worker),主控程序的職責是分配Map或Reduce任務給工作程序,進行宏觀的調(diào)控。在整個應用當中,有M個Map任務和N個Reduce任務,MN的值是由開發(fā)者自行指定的。Master的職能就是把任務統(tǒng)一協(xié)調(diào),并分配給各個空閑的工作程序。
(3)當工作程序得到Map任務時,便開始讀取分析對應的數(shù)據(jù)塊內(nèi)容,繼而得出Key或Value記錄數(shù)據(jù),將其發(fā)送給用戶自定義的Map函數(shù),同時內(nèi)存中會對函數(shù)輸出的中間結(jié)果數(shù)據(jù)進行緩存。
(4)本地磁盤不斷地接收緩存數(shù)據(jù)中的中間結(jié)果,并且在寫入磁盤的過程中,每個中間結(jié)果都會被分割成N份,N是Reduce的個數(shù)。一般是用Key對N通過哈希取模的方式來得到切割函數(shù),N份中間數(shù)據(jù)對應著每個Reduce函數(shù)所需的數(shù)據(jù)分片零時文件。當對應數(shù)據(jù)塊的處理完成之后,將其N個臨時文件的位置發(fā)送給主控程序,再由主控程序?qū)⑵滢D(zhuǎn)交給Reduce任務的工作程序。
(5)當主控程序的指令下達到某個Reduce任務的工作程序時,工作程序?qū)ap任務產(chǎn)生的M個數(shù)據(jù)文件遠程拉取到本地。當M個數(shù)據(jù)文件都拉取成功之后,根據(jù)中間數(shù)據(jù)的Key,Reduce任務會對所有記錄進行排序。通過這樣的方式,將相同Key的記錄按照順序聚合在一起。
(6)在經(jīng)過排序之后,用戶自定義的Reduce函數(shù)會接收到Key及其對應的多個Value,Reduce函數(shù)運行得出結(jié)果后將結(jié)果追加到這個Reduce任務對應的結(jié)果文件末尾。
(7)當所有任務都完成之后,主控程序便會喚醒應用程序,此時,MapReduce調(diào)用結(jié)束,進入代碼執(zhí)行階段。
2 MapReduce在水產(chǎn)大數(shù)據(jù)的應用
2.1 MapReduce的開源實現(xiàn)
大數(shù)據(jù)處理解決的問題主要分為兩個方面:海量數(shù)據(jù)的存儲及計算。針對上述問題,出現(xiàn)了一系列的解決方案,其中開源框架中的Hadoop最為典型。
2006年Docu Cutting開源了 Hadoop,先后推出了Hadoop1.0、Hadoop2.0。Hadoop1.0 即第一代Hadoop,其內(nèi)核主要由 HDFS和MapReduce兩個系統(tǒng)組成,其中MapReduce是一個離線處理框架,由編程模型(新舊API)、運行時環(huán)境(JobTracker 和 TaskTracker)和數(shù)據(jù)處理引擎(MapTask和ReduceTask)三部分組成。
Hadoop2.0即第二代Hadoop,其內(nèi)核主要由HDFS、MapReduce和YARN三個系統(tǒng)組成,其中YARN是一個資源管理系統(tǒng),負責集群資源管理和調(diào)度,MapReduce則是運行在YARN上的離線處理框架。Hadoop2.0系統(tǒng)架構(gòu)如圖2所示。
Hadoop2.0重點改進了以下問題:
(1)針對Hadoop1.0中NameNode制約HDFS的擴展性問題,提出HDFS Federation,它讓多個NameNode分管不同的目錄進而實現(xiàn)訪問隔離和橫向擴展,同時徹底解決了NameNode單點故障問題。
(2)針對Hadoop1.0中的MapReduce在擴展性和多框架支持等方面的不足,它將JobTracker中的資源管理和作業(yè)控制分開,分別由ResourceManager(負責所有應用程序的資源分配)和ApplicationMaster(負責管理一個應用程序)實現(xiàn),即引入了資源管理框架Yarn。
(3)Yarn作為Hadoop2.0中的資源管理系統(tǒng),它是一個通用的資源管理模塊,可為各類應用程序進行資源管理和調(diào)度,不僅限于MapReduce一種框架,也可以為其他框架使用,如Tez、Spark、Storm等。
2.2 MapReduce在水產(chǎn)行業(yè)的應用—物流云
目前我國水產(chǎn)品的主要流通方式依舊是以城鎮(zhèn)農(nóng)貿(mào)市場為主導的傳統(tǒng)模式,流通環(huán)節(jié)繁多,供應鏈冗長,大大降低了水產(chǎn)品的流通效率,并增加了流通環(huán)節(jié)的損耗率。而損耗率的居高不下,恰恰是我國水產(chǎn)品流通的最大痛點。
物流數(shù)據(jù)由于其數(shù)據(jù)量過于龐大且數(shù)據(jù)種類繁多,傳統(tǒng)大數(shù)據(jù)技術根本解決不了這一問題。而對于這種超大規(guī)模數(shù)據(jù)的處理,正是MapReduce計算模型的優(yōu)勢所在。因此,建設一個基于MapReduce的物流云體系已成為解決傳統(tǒng)水產(chǎn)品流通模式弊端的不二選擇。
物流云服務是一種在網(wǎng)絡技術與分布式計算技術的支持下,通過物流云服務平臺整合物流資源和客戶資源,并按照客戶需求管理和顛沛物流資源,為客戶定制和提供安全、高效、優(yōu)質(zhì)廉價、靈活多變的個性化物流服務的新型物流服務模式。
在云計算環(huán)境下,物流資源與物流能力以物流云服務的形式運作。在物流云服務模式下,物流服務具有不同于傳統(tǒng)服務模式的特征,主要表現(xiàn)在以下幾個方面。
(1)物流服務環(huán)境的開放性,使用戶根據(jù)需要獲取服務。
(2)物流資源的虛擬性,使物流資源以云服務的方式運作。
(3)物流服務運作的協(xié)同性,使不同的物流服務主體通過寫作完成復雜的物流任務。
(4)通過資源、能力虛擬化封裝,實現(xiàn)了物流即服務的重大轉(zhuǎn)變。
通過對物流行業(yè)各方面的基礎需求分析,以及對現(xiàn)階段國內(nèi)物流行業(yè)的信息化現(xiàn)狀的把握,物流云計算服務平臺劃分為:物流公共信息平臺、物流管理平臺以及物流園區(qū)管理平臺三個部分。這三個平臺有各自適用的作用層面,物流公共信息平臺針對的是客戶服務層,擁有強大的信息獲取能力;物流管理平臺針對的是用戶作業(yè)層,可以大幅度地提高物流及其相關企業(yè)的工作效率,甚至可以拓展出更大的業(yè)務領域;物流園區(qū)管理平臺針對的是決策管理層,可以幫助物流樞紐中心,物流園區(qū)等管理轄區(qū)內(nèi)的入駐企業(yè)進行規(guī)劃和布局。
3 結(jié)語
水產(chǎn)農(nóng)業(yè)大數(shù)據(jù)分析和應用是“農(nóng)業(yè)4.0”的關鍵技術。MapReduce計算模型作為現(xiàn)今大數(shù)據(jù)處理的核心算法和Hadoop MapReduce的核心,必然會在其發(fā)展過程中掃清技術和商業(yè)模式的障礙。MapReduce計算模型的應用是大規(guī)模并發(fā)處理海量數(shù)據(jù)的重要解決方案。
【參考文獻】
[1]王偉.大數(shù)據(jù)分析——RDBMS與MapReduce的競爭與共生漫談[J].軟件學報,2013,23(7):55-56.
[2]李國杰.大數(shù)據(jù)研究的科學價值[J].中國計算機學會通訊,2012(9):8-15.
[3]李玨,馬曉東,張果謀.大數(shù)據(jù)分析在用電采集數(shù)據(jù)分析與智能監(jiān)測系統(tǒng)的設計與實現(xiàn)[J].電氣應用,2015(S1):558-561.
[4]維克托·邁爾·舍恩伯格,肯尼斯·庫克耶.大數(shù)據(jù)時代[M].杭州:浙江人人民出版社,2013.