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