李煒,賀麗娟(陜西國防工業(yè)職業(yè)技術(shù)學(xué)院,陜西西安,710300)
Mapreduce模型及支撐系統(tǒng)概述
李煒,賀麗娟
(陜西國防工業(yè)職業(yè)技術(shù)學(xué)院,陜西西安,710300)
MapReduce是由并行編程模型及相關(guān)支撐系統(tǒng)組成的數(shù)據(jù)處理框架,通過定義接口和運(yùn)行時(shí)支持庫, 通過定義良好的接口和運(yùn)行時(shí)支持庫,能夠自動(dòng)并行執(zhí)行大規(guī)模計(jì)算任務(wù),通過隱藏底層實(shí)現(xiàn)細(xì)節(jié),降低實(shí)現(xiàn)并行編程的難度,Hadoop 是目前MapReduce 框架最流行的開源實(shí)現(xiàn)。文章首先介紹了 MapReduce 并行編程模型及其hadoop的運(yùn)行原理、運(yùn)行機(jī)制, 深入研究了 MapReduce 計(jì)算任務(wù)在 Hadoop 系統(tǒng)中的運(yùn)行過程。
大數(shù)據(jù);MapReduce;hadoop;HDFS
MapReduce 由Google公司于2004提出的一種最為成功的面向數(shù)據(jù)的并行編程模型[1],該模型給程序員在復(fù)雜的分布式集群平臺(tái)上提供了簡單的編程接口和強(qiáng)大的支撐系統(tǒng),使海量數(shù)據(jù)的并行編程模型變得簡單易學(xué)、大大的降低并行編程難度,讓程序員只需要了解應(yīng)用程序的業(yè)務(wù)邏輯實(shí)現(xiàn)。MapReduce 模型的支撐系統(tǒng)來自行處理以下工作:(1)任務(wù)調(diào)度并行(2)彈性分布(3)系統(tǒng)負(fù)載均衡和容錯(cuò)等問題。
首先在數(shù)據(jù)預(yù)處理階段,Hadoop系統(tǒng)把數(shù)據(jù)先載入到分布式存儲(chǔ)文件中;其次數(shù)據(jù)處理階段,在Hadoop實(shí)現(xiàn)大規(guī)模并行數(shù)據(jù)處理時(shí),可使用Python、java、HiveQL 和 Pig Latin 等編程語言簡化并協(xié)助對于數(shù)據(jù)的處理,提高數(shù)據(jù)處理的 能力與效率[2]。
1.1 MapReduce編程模型

MapReduce編程模型的核心是map和reduce兩個(gè)指定函數(shù)的定義和執(zhí)行,map()責(zé)分塊數(shù)據(jù)的處理,reduce()函數(shù)負(fù)責(zé)對分塊數(shù)據(jù)處理的中間結(jié)果進(jìn)行歸約。MapReduce其實(shí)就是Divide/Conquer 的過程, map階段將輸入數(shù)據(jù)U<keys,values>,然后對這些值進(jìn)行map操作,得到中間數(shù)據(jù)[3]。接著對這些拆分后的數(shù)據(jù)進(jìn)行高度并行的map運(yùn)算, 最后將 Map 后的結(jié)果進(jìn)行 Reduce, 得到最終的結(jié)果。 有時(shí),由于數(shù)據(jù)的原因,需要將原始數(shù)據(jù)分解成多個(gè)MapReduce過程。其處理對于數(shù)據(jù)的處理流程示意圖如圖1所示。
1.2 Hadoop系統(tǒng)
Hadoop 它是由Apache基金會(huì)所開發(fā)的以MapReduce編程模型為核心的開源分布式的系統(tǒng)基礎(chǔ)架構(gòu)計(jì)算框架項(xiàng)目[4]。其中HDFS和MapReduce為Hadoop的框架的核心設(shè)計(jì)。HDFS為海量大數(shù)據(jù)的存儲(chǔ)提供了可行性的技術(shù)支持,MapReduce則為海數(shù)據(jù)的計(jì)算提供了可能。Hadoop它是一個(gè)可以實(shí)現(xiàn)對大量數(shù)據(jù)進(jìn)行分布式處理的一種軟件框架,以高效、可伸縮、可靠的、高錯(cuò)容、低成本的方式對數(shù)據(jù)進(jìn)行處理。
1.2.1 Hadoop的組織架構(gòu)
Hadoop 系統(tǒng)對大規(guī)模機(jī)器集群以主從的組織方式進(jìn)行管理,即把各處理節(jié)點(diǎn)劃分為一個(gè)Master節(jié)點(diǎn)和若干個(gè)Slave節(jié)點(diǎn),如圖 2-2。主節(jié)點(diǎn)上運(yùn)行守護(hù)程序,守護(hù)程序主要負(fù)責(zé)對整個(gè)計(jì)算任務(wù)執(zhí)行過程的統(tǒng)一管理,并且把計(jì)算任務(wù)分解成可并行執(zhí)行的若干個(gè)子任務(wù),同時(shí)分配到各從節(jié)點(diǎn)中。節(jié)點(diǎn)上運(yùn)行守護(hù)程序,從節(jié)點(diǎn)的任務(wù)是負(fù)責(zé)調(diào)度各從節(jié)點(diǎn)中的處理機(jī)資源,并完成各子任務(wù)的具體執(zhí)行。具體執(zhí)行過程如下圖2所示。

圖2 Hadoop的組織架構(gòu)
1.2.2 分布式文件系統(tǒng) HDFS
HDFS采用master/slave架構(gòu),是Hadoop系統(tǒng)的重要組成。一個(gè)獨(dú)立的HDFS集群由一個(gè)Namenode和若干個(gè)Datanodes組成。其中,Namenode是負(fù)責(zé)管理文件系統(tǒng)namespace以及客戶端對文件的訪問的中心服務(wù)器。集群中的Datanode一般是負(fù)責(zé)管理它所在節(jié)點(diǎn)上存儲(chǔ)的一個(gè)節(jié)點(diǎn)。其處理流程圖如圖3所示。

圖3 HDFS數(shù)據(jù)處理流程
一般給定系統(tǒng)集群資源后單個(gè) MapReduce 計(jì)算任務(wù)的具體執(zhí)行步驟如下。
(1)計(jì)算任務(wù)的提交
把用戶提交的數(shù)據(jù)集的數(shù)據(jù)劃分為若干個(gè)數(shù)據(jù)塊,同時(shí)把各數(shù)據(jù)塊載入到 Hadoop集群的各從節(jié)點(diǎn),HDFS 文件系統(tǒng)的 DatatNode 和 NameNode 負(fù)責(zé)數(shù)據(jù)的管理和存儲(chǔ)。程序集被送到主節(jié)點(diǎn)負(fù)責(zé)完成對程序的調(diào)度執(zhí)行,主要通過主節(jié)點(diǎn)中的JobTracker 和多個(gè)從節(jié)點(diǎn)中的 TaskTracker實(shí)現(xiàn)完成。
(2)Map子任務(wù)的執(zhí)行
主節(jié)點(diǎn)中的JobTracker把map函數(shù)的執(zhí)行代碼傳輸分配到選定的從節(jié)點(diǎn)中,再由從節(jié)點(diǎn)上的TaskTracker對節(jié)點(diǎn)或附近節(jié)點(diǎn)的數(shù)據(jù)塊調(diào)度執(zhí)行map函數(shù),形成多個(gè)Map子任務(wù)。
(3)Reduce子任務(wù)的執(zhí)行
部分Map子任務(wù)執(zhí)行完畢時(shí),選定的節(jié)點(diǎn)開始執(zhí)行reduce函數(shù),開始對由Map子任務(wù)產(chǎn)生的中間數(shù)據(jù)鍵值對<u2,v2>進(jìn)行處理。Reduce的子任務(wù)數(shù)可以為一個(gè)或若干個(gè)。
(4)結(jié)果返回階段
把存儲(chǔ)在HDFS中計(jì)算任務(wù)的執(zhí)行結(jié)果提交給用戶。
本文主要介紹mapreduce模型及其支撐系統(tǒng)的模型,分別對mapreuce編程模型、hadoop的結(jié)構(gòu)及Hdfs進(jìn)行了簡單的介紹,對于在實(shí)際系統(tǒng)中影響系統(tǒng)執(zhí)行效果的資源優(yōu)化配置如:系統(tǒng)容錯(cuò)、系統(tǒng)的任務(wù)調(diào)度及負(fù)載均衡等由于篇幅關(guān)系這里不在介紹。總之,隨著大數(shù)據(jù)產(chǎn)業(yè)的發(fā)展,對于mapreduce及其支撐系統(tǒng)的研究具有非常重大的意義。
[1]Dean J, Ghemawat S. MapReduce: Simplified data processingon large clusters. Communications of the ACM, 2008, 51(1):107-113.
[2]韓海雯.MapReduce計(jì)算任務(wù)調(diào)度旳資源配置優(yōu)化研究[D].華南理工大學(xué),2013.10.
[3]應(yīng)毅.MapReduce 并行計(jì)算技術(shù)發(fā)展綜述[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014.
[4]Tom White 著.周敏奇,王曉玲,金澈清等譯.Hadoop權(quán)威指南(第二版)[M].北京:清華大學(xué)出版社,2011.
Overview graphs model and support system
Li Wei,He Lijuan
(Shanxi instiute of technology,Xi’an Shaanxi,710300)
MapReduce is composed of parallel programming model and its support system data processing framework, through the definition of interface support library and runtime support library, through the definition of a good interface and operation, capable of automatic parallel execution of large-scale computing tasks, by hiding the underlying implementation details, reduce the difficulty of parallel programming, Hadoop is currently the most popular MapReduce framework open source implementation. Firstly, this paper introduces the MapReduce parallel programming model and the operation principle and operation mechanism of Hadoop, and deeply studies the operation process of MapReduce computing task in Hadoop system. Key words: big data; graphs; hadoop; HDFS
李煒(1990.9),男,漢族,籍貫陜西禮泉,助教,碩士研究生,研究方向人工智能大數(shù)據(jù)。