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