<noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"><delect id="ixm7d"></delect></rt><delect id="ixm7d"></delect><bdo id="ixm7d"></bdo><rt id="ixm7d"></rt><bdo id="ixm7d"></bdo><noframes id="ixm7d"><rt id="ixm7d"><rt id="ixm7d"></rt></rt><rt id="ixm7d"><rt id="ixm7d"></rt></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt> <noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><noframes id="ixm7d"><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d"><rt id="ixm7d"></rt><noframes id="ixm7d">

hadoop畢業論文題目范文

2023-09-30

hadoop畢業論文題目范文第1篇

云計算(Cloud Computing)是一種新興的商業計算模型。它將計算任務分布在大量計算機構成的資源池上,使各種應用系統能夠根據需要獲取計算力、存儲空間和各種軟件服務。云計算是網格計算(Grid Computing)、分布式計算(Distributed Computing)、并行計算(Parallel Computing)、效用計算(Utility Computing)、網絡存儲(Network Storage Technologies)、虛擬化(Virtualization)、負載均衡(Load Balance)等傳統計算機技術和網絡技術發展融合的產物。

它的數據存儲是采用分布式存儲方式實現的,這就可以保證高可靠性、高可用性和經濟性,數據存儲的高可靠性是采用冗余存儲的方式來保證的,用可靠的軟件來彌補硬件的不足,從而提供廉價可靠的海量分布式存儲服務和計算服務。另外,數據存儲技術必須具有高吞吐率和高傳輸率的特點,這樣云計算系統就可同時滿足大量用戶的需求,才能為大量用戶并行地提供服務。云計算的數據存儲系統最著名的是谷歌研發的非開源系統GFS(Google File System)和Hadoop開發團隊開發的開源系統HDFS(Hadoop Distributed File System)。

1. Map Reduce編程模型

并行計算技術是云計算的核心技術,也是最具戰性的技術之一。Map Reduce是Google公司的核心計算模型,名字源于函數式編程模型中的兩項核心操作:Map和Reduce操作。Map操作獨立地對每個元素進行操作,且操作沒有副作用;Reduce操作對N個Map結果進行歸約,也就是Map[1,2,…,N]的結果是Reduce操作的參數。在一個指令式語言中求值順序是確定的,每個函數都有可能會變更或依賴于外部狀態,所以必須有序地執行這些函數。在Map Reduce編程模型中,只要沒有函數修改或依賴于全局變量,N個Map操作的執行順序可以是無序的,這種特性使得Map Reduce模型適合于對大規模數據進行并行處理。

在Map Reduce計算模型中,有兩個關鍵過程:映射過程Map和聚集過程Reduce。因此需要用戶提供兩個關鍵函數,映射(Map)函數和聚集(Reduce)函數,這兩個函數對一組輸入的鍵值對(key/value)進行計算,得出另一組輸出鍵值對,即有:

在不同的應用中,Map和Reduce的輸入參數和輸出結果是不相同的。Map的輸入參數in_key和in_value,給定了Map函數要處理的是哪些數據。每個Map函數計算完畢后輸出結果一組鍵/值對,它們是經過Map任務執行完成后所返回的中間結果。系統在執行Reduce任務之前,先檢查前面Map任務返回的中間結果,根據Key值進行分類處理,把相同key值所對應的value合并在一起,把它們送給同一個Reduce任務進行處理,從而可以看出,Reduce的輸入參數是(key,[value1,…,valuem])。Reduce任務主要對這些有著相同key值所對應的value值進行歸并處理,在Reduce任務執行完成后輸出(key,final_value)的結果。一個key值對應了一個Reduce任務,把所有Reduce任務執行的結果合并連接在一起就形成了最終的輸出結果。

典型的Map Reduce計算過程如圖1。

(1)用戶程序調用Map Reduce庫,把輸入的大數據集分成M個數據片段;

(2)由master分配程序進行分配,有M個Map任務和R個Reduce任務將被分配,master將一個Map任務或Reduce任務分配給一個空閑的工作站點;

(3)被分配了Map任務的工作站點讀取一個數據片段,從中解析出key/value對,用戶自定義的Map函數接受一個輸入的key/value對值,然后產生一個中間key/value對值的集合;

(4)Map Reduce庫把所有具有相同中間key值I的中間value值集合在一起后傳遞給reduce函數;

(5)用戶自定義的Reduce函數接受一個中間key的值I和相關的一個value值的集合。Reduce函數將這些value值合并成一個較小的value值的集合。正常的,每次Reduce函數調用只產生0或1個輸出value值??梢酝ㄟ^一個迭代器把中間value值提供給Reduce函數,這樣就可以處理無法全部放入內存中的大量的value值的集合。

2. Hadoop框架的工作機制

Hadoop是Apache軟件基金會(Apache Software Foundation)組織下的一個開源項目,提供分布式計算環境下的可靠、可擴展軟件。Hadoop平臺擁有自己的分布式文件系統(HDFS),具體實現采用Map Reduce模式。Hadoop采取文件備份的方式,為每份數據制作若干拷貝,擁有較高的安全可靠性。作為一個開源的分布式系統平臺,Hadoop除了擁有開源所帶來的更新速度快、應用廣泛等優勢外,還具有以下一些其它分布式云計算框架所共有的優點:高度的可擴展性、經濟實用性、高速有效性、高可靠性。

HDFS采用Master/Slave架構,一個HDFS集群由一個命名節點(Name Node)和一組數據節點(Data Node)組成。命名節點是一個中心服務器,負責管理文件系統的名字空間(Name Space)以及客戶端對文件的訪問。在集群系統中,一般在一個節點上運行一個數據節點,負責管理它所在節點上的數據存儲,并負責處理文件系統客戶端的讀寫請求,在命名節點的統一調度下進行數據塊的創建、刪除和復制。Hadoop還實現了Google的Map Reduce分布式計算模型,Map Reduce把應用程序的總任務分割成許多子任務,每個子任務可以在任何集群節點(數據節點,通常也作為計算節點)上并行處理。HDFS創建了多份數據塊(Data Blocks)的副本(Replicas),以保證各個子任務節點計算的可靠性(Reliability)。由于采用了分布式文件系統和Map Redace模型,因此Hadoop框架具有高容錯性及對數據讀寫的高吞吐率,能自動處理失敗節點。圖2是Hadoop集群系統架構的示意圖。

由圖2可知,HDFS是由一個命名節點和多個數據節點組成的。數據節點存儲著文件系統的元數據,它的作用就像是文件系統的總指揮,維護文件系統命名空間、規范客戶對于文件的存取和提供對于文件目錄的操作;數據節點中存儲著實際的數據,負責管理存儲節點上的存儲空間和來自客戶的讀寫請求。數據節點也執行塊創建、刪除和來自命名節點的復制命令。

3. 算法實例

3.1 實驗環境

(1)硬件環境配置

根據上面分析的Hadoop架構體系,Hadoop集群可以分成兩大類角色:Master和Slave,前者主要配置Name Node和Job Tracker節點;后者配置Data Node和Task Tracker節點。例如在我們的實驗中,配置Hadoop集群一共有4臺PC,一臺部署為Name Node和Job Tracker,另外兩臺部署為Data Node和Task Tracker。使用的操作系統為Fedora 8Linux,Java環境為jdk-1.6.0-14,Hadoop版本為Hadoop0.20,并在各節點的/etc/hosts文件中添加節點IP及對應機器名。

如果該臺機器作Name Node節點用,則需要在hosts文件中加上集群中所有機器的IP地址及其對應的機器名,例如在我們的實驗中,Name Node節點的/etc/hosts文件內容如下:

如果該臺機器作Data Node節點用,則只需要在hosts文件中加上本機IP地址和Name Node節點的IP地址,如:

(2)建立SSH受信證書

在Hadoop啟動以后,Namenode通過SSH(Secure Shell)來啟動和停止各個節點上的各和守護進程,這就需要在節點之間執行指令的時候是不需要輸入密碼的方式,所以我們需要配置SSH使用無密碼公鑰認證的方式。

(3)Hadoop平臺搭建

(1)將Hadoop部署至其它主機。

(2)在Hadoop上格式化一個新的分布式文件系統。

(3)在Hadoop上啟動Hadoop進程。

(4)啟動完成之后,運行ps-ef命令應該可以看到Hadoop上啟動了2個新的java進程(Name Node,Job Tracker),同時,我們可以到Hadoop2等機器上用ps–ef查看,這些機器上應該已經啟動了2個新的java進程(Data Node,Task Tracker)。

(4)運行Hadoop程序

1)編寫完成Map任務的程序,處理輸入的Key Value對,輸出中間結果。

2)編寫完成Reduce任務的程序,對中間結果進行規約,輸出最終結果。

3)定義Input Format和Output Format,Input Format的主要職責是驗證輸入的類型是否符合配置類型;Output Format的職責是驗證輸出目錄是否已經存在和輸出結果類型是否符合配置類型,如果都成立,則輸出Reduce匯總后的結果。

3.2 實驗結果分析

本實驗所用的節點均為同等配置,各節點名分別為master,slave01,slave02,s1ave03,master作為Name Node和Job Tracker也參與了計算,所以它也作為Data Node和Task Tracker,而slave01-slave03既作為Data Node也作為Task Tracker。在搭建的Hadoop集群系統上運行了本文開發的并行隨機數發生器,實驗中線性比作為一個重要的衡量標準,定義如公式3-1:

結果數據如表1所示。

從上表的分析表明:

(1)單機計算數據規模較大時,算法性能呈現明顯的下降趨勢。隨著輸入數據的成倍增長,單機提取算法處理這些輸入數據所消耗的時間以更快的速度增長。這是因為單機上隨著輸入數據的增長,機器上內存等資源消耗過大,致使機器性能明顯下降,因而出現算法性能變“慢”的現象。

(2)輸入數據量小時,Hadoop集群上并行化算法的處理效率低于單機上非并行化算法的處理效率。這是因為Hadoop集群的啟動和交互需要消耗一定的資源。隨著輸入數據量的增大,Hadoop集群運行速度比單機運行速度明顯加快。這是因為隨著輸入數據量的增大,集群啟動與交互的消耗相對于實際業務邏輯的消耗比率大大降低,但是單機資源消耗過快,出現速度瓶頸。

(3)由此可見,Map Reduce模型適用于解決具有高度內在并行性的數據密集型并行計算問題。用戶只需分解出單個節點應完成的計算單元,按傳統串行算法寫出計算函數和數據收集函數,在Hadoop平臺下就可方便地進行并行計算。Hadoop平臺無需用戶掌握復雜的消息傳遞機制的并行程序設計方法,顯著簡化了并行計算的軟件開發難度,有助于普及并行計算。

4. 結束語

本文介紹了云計算的定義和關鍵技術,對云計算環境下的Map Reduce并行編程模式進行了研究,分析了Map Reduce的編程思想,編程原理和步驟。研究了在架構Hadoop集群的數據分配方式,提出一種基于計算比率的數據分配機制,以提高Map Reduce在架構Hadoop集群中的性能。研究為數據挖掘領域相關算法提供了可行的Map Reduce化方案,實驗結果證明了上述方案的切實有效性。

參考文獻

[1]WeissA.Computing inClouds[J].ACM Networker,2007,11(4):18-25.

[2]Buyya R,Yeo C S,Venugopal S.Market-Oriented Cloud Computing Vision,Hype,and Reality for Delivering IT Services as Computing Utilities[C]∥Proceedings of the200810th IEEE International Conference on High Performance Computing and Communications.[s..l]:[s.n.],2008:5-13.

[3]Hadoop[EB/OL].http://hadoop.apache.org/core/,2008.12.16.

[4]萬至臻.基于MapReduce模型的并行計算平臺的設計與實現[D].杭州:浙江大學計算機科學與技術學院,2008.

[5]朱珠.基于Hadoop的海量數據處理模型研究和應用[D].北京:北京郵電大學,2008.

hadoop畢業論文題目范文第2篇

針對上述問題,首先必須有效地存儲和管理視頻數據,才能為用戶提供良好的下載、播放等服務,Hadoop和ffmpeg為我們提供了新的思路。

1 相關知識

Hadoop是一種可以對海量數據進行分布式處理的軟件框架。Hadoop對數據的處理有可靠、高效、可伸縮的特點。HDFS是Hadoop的分布式文件系統,是Hadoop的重要組成部分。在使用的時候,HDFS既能夠作為存儲組件來配合Hadoop其他組件實現云功能;也可以單獨的用來構建集群;通過Hadoop的HDFS,用戶便能夠開發分布式程序,而不用了解分布式文件系統的底層細節,充分利用集群的特點進行存儲和高速運輸。Map Reduce是一個編程模型,也是一個處理和生成超大規模數據集的算法模型的實現[2]。map和reduce函數是其底層過程。Map函數負責讀取文件分片中的數據記錄,把所有的數據記錄都轉換成鍵值對,并把文件分片的統計數據記錄下來。Map函數生成的中間結果作為Reduce函數的輸入,它會根據鍵以合并方式來縮小鍵/值對列表。

FFmpeg擁有領先的音/視頻編碼庫—libavcodec,是用來轉換、記錄數字音頻、視頻,并可以將其轉化成流的開源視頻工具軟件。Ffmpeg雖然是在Linux下開發出來的,但它能夠在大部分操作系統中編譯,其中就包括Windows系統,能夠完成多種視頻格式的相互轉換,FFMPEG支持FLV,AC3,DV,Div X,MPEG,MPEG4 等40 多種編碼,Matroska,ASF,OGG,AVI,MPEG,等90多種解碼[3]。

2 總體架構

利用Hadoop平臺及FFMPEG工具實現視頻數據轉儲的架構描述如圖1所示[4]:

視頻轉儲的流程如下:

1) 本地服務器獲取源視頻文件,將源視頻文件分割成Chuck_1,Chuck_2,Chuck_3,Chuck_4等視頻片段;

2) 將視頻片段上傳到HDFS;

3) 在Hadoop集群用map對視頻片段進行轉碼生成新的視頻片段Chuckm_1,Chuckm_2,Chuckm_3,Chuckm_4等;

4) 利用reduce對Chuckm_1, Chuckm_2,Chuckm_3,Chuckm_4等視頻片段進行合并。

3 模塊實現

根據視頻轉儲處理流程,系統可以分為視頻分割、視頻轉碼、視頻合并、視頻上傳、視頻下載五個模塊。

3.1視頻分割

ffmpeg分割視頻的指令示例如下:

ffmpeg - ss 00:00:00 - i f.avi - vcodec copy - acodec copy - t00:06:00 output.avi

首先,調用Convervideo類,然后調用get Time()方法獲取視頻的總時長,再根據要分割的分片數,獲取每一分片的時長,最后調用ffmpeg分割視頻指令對視頻進行分割,并將分割后的視頻路徑寫入txt中。

視頻分割流程如圖2所示,分割后的效果圖如圖3所示,

3.2視頻轉碼

視頻轉碼的ffmpeg指令示例如下:

ffmpeg –i input_file.avi output_file.mp4

視頻轉碼的工作是在Mapper類的map( )函數中完成的。視頻轉碼流程如圖4所示:

一般來說,視頻分片存儲在HDFS上,而視頻轉碼是在本地文件系統進行的,所以首先需要將視頻分片文件下載到本地。之后map( )函數接收<Video File Name,File Split>鍵值對,再將視頻分片根據解析出的視頻分片在HDFS上的存儲位置,從HDFS下載到本地,在本地完成轉碼工作。<視頻文件名,轉碼后視頻分片位置>是map()函數輸出的鍵值對。鍵值對傳送到reduce( )函數的過程比較繁雜,包括鍵值對的緩存,排序,分區,序列化等過程,如圖5所示。map( )函數輸出結果時,不是直接寫入磁盤中。而是使用了緩沖區,一邊緩存map結果,一邊對結果進行一些預排序。一個map任務對應一個存放map輸出的鍵值對的環形緩沖區。這個緩沖區的大小默認為100M,緩沖區的存放容量達到一定閾值時,一個后臺線程便會把緩沖區的內容寫入到磁盤中。后臺線程從緩沖區取數據的同時,map仍然會向環形緩沖區中寫鍵值對。當后臺線程取鍵值對因為速度比較慢而導致填滿環形緩沖區時,map函數就會阻塞。當緩沖區達到閾值時,后臺線程便會創建一個來存放緩沖區鍵值對的spill文件。所以,一個map任務完成時,也就產生了多個spill文件。map( )函數輸出的中間鍵值對的大小應該盡可能地減小,這樣才能降低系統開銷。因此,本系統中的作為中間鍵值對的,不是把轉碼后的視頻分片,而是其存儲位置[5]。

3.3視頻合并

視頻合并的ffmpeg指令示例:

ffmpeg - f concat - i /home/hadoop/videotest/codelist.txt - c copy outtest.flv

視頻的合并處理工作是由Reducer的reduce( )函數完成的。視頻合并過程如圖6所示:

首先,map()函數將轉碼視頻分片信息傳遞給reduce()函數,reduce( )函數根據接收的信息,將轉碼視頻分片從目標節點下載到本地,最后調用視頻處理類的合并方法將視頻合并,把視頻合并結果上傳至HDFS。reduce函數不輸出鍵值對。

3.4視頻上傳

如何實現通過云存儲平臺把文件上傳至HDFS集群,關鍵是后臺代碼的編寫。這里調用HDFS的API,使用的是HDFS中Distributed File System的copy From Local File方法,將本地文件根據給出的文件路徑上傳到HDFS,最終實現文件從用戶本地上傳到HDFS集群。

上傳文件調用的org.apache.hadoop.hdfs.Distributed File Sys-tem類是繼承的抽象類org.apache.hadoop.fs.File System??蛻舳巳绻胍M行相關文件操作,訪問HDFS集群,必須通過該類來實現??蛻舳伺c集群中Name Node通過Distributed File System類建立連接,然后與Name Node進行通信和相關交互,調用Dis-tributed File System類的相關方法來完成元數據的相關操作。具體流程圖7所示。

3.5視頻下載

客戶端通過Distributed File System類與Name Node建立連接,完成元數據的相關操作后,再調用Distributed File System中的open方法,隨后打開HDFS輸入流FSData Input Stream,將HDFS文件輸入流轉向本地文件輸出流,利用copy To Local File方法便實現了文件從HDFS集群到本地的下載過程。具體流程如圖8所示:

4 結論

隨著互聯網的迅猛發展,云存儲、云計算成為了國內外研究的熱點。在海量數據存儲方面,云存儲的優越性使之成為業界關注的焦點。開源分布式系統框架Hadoop擁有強大的數據存儲能力和計算能力,在云存儲的解決方案和系統架構上,基于Hadoop文件系統的應用越來越廣泛[6]。本文中,這種通過Hadoop和ffmpeg的結合的方法,能夠很好地提升視頻轉儲的效率,為用戶提供良好的用戶體驗。

參考文獻

[1]方陽.海量視頻實時云轉碼系統設計與實現[D].大連:大連理工大學,2013.

[2]李曉波.基于Hadoop的海量視頻數據存儲及轉碼系統的研究與設計[D].杭州:浙江工業大學,2013.

[3]趙淑漫.FFMPEG轉碼技術在HTML5視頻系統中的研究與應用[D].上海:東華大學,2013.

[4]熊曉蕓,段良濤,王金龍.云平臺上AVS視頻轉碼系統的設計與實現[J].電視技術,2016(6).

[5]郭奕希.基于Hadoop的視頻轉碼系統設計與實現[D].武漢華中科技大學,2011.

hadoop畢業論文題目范文第3篇

1.1 云計算體系結構

云計算平臺是開 源的資源 網絡[1],在網絡中 以按需要、易擴展方式獲得所需服務。其體系結構如圖1所示。

云用戶端:主要提供用戶的服務請求和交互界面;

管理系統:用戶和計算資源的管理以及資源的部署和資源調度;

部署工具:優化資源,減少云成本、動態地部署資源,整合和管理云實例;

監控:實時監視和控制系統資源使用情況,同步配置相應結點,是云平臺動態負載均衡策略的重要依據;

服務目錄:選擇和定制服務列表以及對已有的服務進行管理;

服務器群:負責并發請求處理,大規模的數據計算,海量數據存儲。

1.2 云計算服務層次

在云平臺計算中,云計算服務劃分為4個層次,分別是應用層、平臺層、基礎設施層和虛擬化層,如圖2所示。

應用層 (SAAS云軟件):產品有GoogleApps、Software+Service;

平臺層(PAAS云平臺):產品有Google APPEngine、Force.com;

基礎設施層(IAAS云設備):產品有亞馬遜的可彈性計算(EC2)、SunGrid。

虛擬化層:產品有VMware、Virtualbox、Xen、Qemu 、Hyper-V、KVM。

2 Hadoop云計算關鍵技術

2.1 虛擬化技術

虛擬化技術是云計算系統的一部分,是一種管理資源技術[2],能夠為某些硬件對象創造模擬化版本,如操作系統、存儲設備和網絡設備等,解決了硬件結構不可分割的限制,用戶可以更好的方式來應用這些資源,通過資源整合形成強大的存儲和計算能力,使用者能夠方便使用、開發及維護存儲的數據。主要技術有:

硬件虛擬化:在底層硬件建立虛擬化程序,主要軟件有VMware和Virtual PC??稍趩螜C上實現多個或多種操作系統,缺點是增加了處理器開銷。

操作系統虛擬化:在操作系統層面增加虛擬服務器功能,基于共用操作系統,其架構體系比較簡單。缺點是多種操作系統不能在同一機 器上實現。主要軟件 有Virutozzo和Solaris Container。

并行虛擬化:又稱準虛擬化,和硬件虛擬化類似,區別在于,對操作系統的修改降低了額外開銷,但其效率比硬件虛擬化要高很多,目前主要產品是開源項目XEN。

2.2 數據存儲技術

高可靠、高效率和經濟性是云計算數據存儲的特點,采用分布式存儲方法實現[3]。在云計算中,數據的可靠性是第一位的,所采用的技術手段是冗余存儲,即多個副本對應同一數據。Hadoop采用HDFS(Hadoop Distributed File System)進行文件管理,HDFS設計的基礎和目標是:硬件錯誤是常態,因此需要冗余;大數據量的流式讀寫,而非OLTP;簡單一次性模型,對文件采用一次性寫多次性讀的邏輯。

HDFS結構模型為主從(Master/Slave)結構模型,一個NameNode和若干個DateNode組成一個 集群,NameNode是主服務器,管理文件系統的命名空間,記錄每個文件數據塊在DateNode節點上的位置和副本信息,記錄命名空間的改動,協調客戶對文件的訪問,使用事務日志記錄HDFS元數據的變化情況。DateNode負責在物理節點上的存儲管理,用戶數據被分成若干個數據塊(默認大小是64MB),分散存儲在一組DateNode節點上,一次寫入多次讀取,不能被修改。HDFS宿主語言是Java,任何支持Java的計算機都可以部署NameNode和DateNode,這些計算機通常運行的是GNU/Linus操作系統。HDFS體系結構如圖3所示。

2.3 數據管理技術

云計算中的數據管理技術必須能夠高效地管理大規模數據集[4],必須在海 量數據中 檢索到特 定的數據。HDFS通過3個重要角 色進行數 據文件管 理,即NameNode、DateNode和Client。NameNode是分布式文件系統的管理者,DateNode是文件系 統的工作 節點,以塊文件(Block)形式存儲在文件系統中,是文件存儲的基本單元,并將塊的信息發送給NameNode,Client是獲取分布式文件系統的應用程序。

作為分布式文件系統,HDFS在管理方面特點有:

文件寫入:Client向NameNode發出文件請求;NameNode根據文件塊的配置情況,返回所管理的DateNode;Client將文件劃分為多個塊(Block),根據DateNode的地址信息,按順序將其寫入每一DateNode中,NameNode并不參與數據的傳輸。

文件讀取:Client向NameNode發出文件 讀取請求;NameNode返回文件存 儲的DateNode信息;Client訪問DateNode獲取數據。

冗余副本策略:所有數據 塊都有副 本,可以在hdfs_site.xml中設置復制因子,指定副本數量。

機架策略:HDFS具有“機架感知”,本機架放一個副本,其它機架放其它副本,這樣可以防止機架失效時數據丟失,提高帶寬利用率。

心跳機制:HDFS通過心跳機制來完成主節點和從節點之間的通信,NameNode周期性接 收來自DateNode的心跳信號及塊報告,沒有按時發送心跳的DateNode會標記為宕機,不再給它任何I/O請求。

數據校驗:采用CRC32數據校驗。

數據復制:HDFS能夠平衡DateNode存儲利用率和平衡DateNode數據交互壓力,這對于新結點的加入十分有利。

2.4 編程模型技術

基于MapReduce編程模型在Hadoop上開發并行應用程序,主要思想是對大規模數據集 “分而治之”[5],包括Map和Reduce兩個過程。Map負責“分”,把復雜任務分解為簡單的任務執行。Reduce對Map階段的結果進行匯總,將大數據集分解為眾多小數據集,這些小數據集由集群中的一個節點進行處理,并對生成的中間結果合并,形成最終結果。在Map和Reduce中間有一 個Shuffler過程,它可以把Map的輸出按照某種KEY值,重新分割組成N份,把符合某種范圍的KEY值,輸出到特定的Reduce去處理,大大簡化了Reduce過程。Reduce的數目由mapred-site.xml配置文件項目mapred.reduce.tasks決定,缺省為1。用戶所要完成的工作就是編寫Map和Reduce函數。MapReduce編程模型非常適合在大量計算機組成的大規模集群上并行運算[6],每一個Map和Reduce任務均可同時運行于一個單獨的計算結點上。

2.4.1 實現機制

(1)用戶程序調用MapReduce函數,把原始大數據切割成小數據M塊,每塊16M~64M,默認是64M。處理M塊數據,就啟動M個Map任務,這M個Map任務被分布在N個云平臺計算機上并行運行,Reduce任務數量R則由用戶指定。

(2)主控程序Master選擇空閑Slave來分配這些Map或Reduce任務。

(3)一個被分配Map任務的Slave讀取并處理相關的輸入塊信息,Map函數接收分析出的<Key,value>對,這些Map函數產生的中間結果<Key,value>對,被暫時緩沖到內存保存。

(4)被暫時緩沖到內存的中間結果<Key,value>對,按照設定的時間寫回到本地硬盤,Master獲取中間 結果<Key,value> 對在本地硬盤位置信息,這些信息被Reduce的Slave接收。

(5)Master通知Reduce的Slave有關中間<Key,value>對的位置信息,并調用遠程過程從Map Slave的本地硬盤讀取緩沖的中間結果數據,并對Key進行排序。

(6)排序后的中間數據被Reduce Slave根據每個唯一中間Key進行遍歷,并把相關的中間結果集合和Key傳遞給Reduce函數,Reduce函數產生的結果被定向到一個輸出文件,形成最終結果。

2.4.2 具體實例分析

MapReduce編程單詞計數,見圖4。

偽代碼如下:

(1)根據文件包含的信息分割文件,每行分為一組,共三組。

Hello→ (Key,Value);Hello World→ (Key,Value);Hello Hadoop World→(Key,Value)

(2)利用Map函數對生成后的每一對(Key,Value)進行處理,生成新的(Key,Value)對,進行Map輸出,結果如下:

< Hello,1>;< Hello,1> < World,1>;< Hello,1> < Hadoop ,1> < World,1>

(3)Map輸出后進行內部整合,結果如下:

<Hello,1> < Hello,1> < Hello,1>;< World,1> < World,1> ;< Hadoop ,1>

(4)調用Reduce函數完成最后工作,結果如下:

<Hello,3>;< World,2>;< Hadoop ,1>

3 結語

Hadoop是云計算的重要組成部分,是一個能夠讓用戶輕松架構和使用的分布式平臺,并且可以充分利用集群的計算和存儲能 力完成海 量的數據 處理。Hadoop中的HDFS和MapReduce組成了Hadoop核心,HDFS具有高度的容錯性和兼容性,Hadoop可以部署在低廉的計算機上,且不限于某個操作系統。Hadoop的HDFS數據管理能力和MapReduce高效的任 務處理能 力以及其 開源特性,使其在分布式系統中大放異彩,將在眾多行業和科研領域廣泛應用。

摘要:Hadoop是實現云計算事實標準的開源軟件,它包含數十個具有生命力的子項目,構造的數據集群能在數千個節點上運行,處理的數據量和排序時間不斷打破世界記錄。它的核心為分布式文件系統(HDFS)和MapReduce編程模型,能夠解決海量數據需求、分析、處理和挖掘及數據的長期保存??墒褂么罅康牧畠rPC機通過集群來代替價格昂貴的服務器,使云計算硬件成本大大降低,用戶能夠按需獲取計算力、存儲空間和信息服務。

hadoop畢業論文題目范文第4篇

在真正的大數據環境中, 有很多其他的數據源、數據暫存區域、臨時文件和日志文件都保存著HDFS之外的敏感數據。當然, 敏感數據在傳輸過程中, 從終點傳輸到集群時, 或者在企業數據從集群中的一個節點轉移到另一個節點時, 都必須受到保護。有一些方案可以為靜態和傳輸的數據進行數據加密, 從而使企業不僅可以滿足合規要求, 還可以保護信息資產的安全。

Apache Hadoop傳輸加密

確保Apache Hadoop集群安全的首要一步是支持傳輸加密, 這是為日后增加的每一個其他的安全層的基礎。認證和Kerberos依賴于通信安全, 所以在深入支持認證和Kerberos之前, 必須支持數據傳輸的加密。

Apache Hadoop并非是“鐵板一塊”的應用, 正相反, 它要涉及Pig和Hive直至Impala及Kudu等。這些服務可能與包括RPC、TCP/IP等協議在內的不同協議通信, 而且每種協議都有加密數據的不同方法。使用Web的都不會對瀏覽器地址欄中的“https://”及其旁邊的鎖頭標志感到陌生。與之類似的是, 要實現Hadoop中的安全通信, 需要支持使用協議的安全版本。

RPC/SASL

對于與RPC通信的組件來說, 需啟用SASL來保護傳輸中的RPC數據。SASL是通過在core-site.xml文件中設置hadoop.rpc.protection屬性來啟用, 在啟用此選項時有三個選項:

認證:提供雙方間的身份驗證;

完整性:提供雙方間的身份驗證和消息的完整性;

私密性:除提供認證和完整性之外, 還提供機密性。

當然, 用戶可能希望選用最安全的選項, 所以下面就看看在core-site.xml文件的內容:

改變此屬性后, 在集群中的所有后臺程序均需重新啟動, 以確保所有各方都通過相同的加密協議進行通信。

TCP/IP

由于Hadoop的數據協議用于通過集群數據節點發送和接收數據, 這種協議使用直接的TCP/IP套接字, 并且支持通過密鑰 (由RPC進行交換) 進行加密通信。為支持TCP/IP加密的數據流, 用戶需在hdfssite.xml配置文件中將dfs.encrypt.data.transfer屬性設置為“true”。這種配置的變化也必須在Name Node和Data Nodes中做出改變:

還可選擇配置加密密碼;在此案例中, 已經配置了更安全的AES-256算法。

在改變了這種屬性后, 集群中的Name Node和Data Node后臺程序都需要重新啟動。

TLS/HTTPS

不同的Hadoop組件都是用不同的編碼語言開發的, 例如, Map Reduce用Java開發, 因而SSL/TLS可以用不同的方法進行配置。此例中檢查啟用Map Reduce v2的Web UI的加密。

為啟用Map Reduce v2的加密Web UI, 需要編輯core-site.xml文件, 將hadoop.ssl.enabled屬性設置為”true”:

hadoop.ssl.enabled true true

為啟用Map Reduce v2的shuffle, 用戶需要編輯mapred-site.xml文件并將

mapreduce.shuffle.ssl.enabled屬性設置為“true”:

除此之外, 還有證書問題、信任存儲以及其他SSL/TLS配置。但是, 由于此文只是從一個較高的層次上進行概覽而不討論細節, 而是僅僅指出用戶需要從活動目錄管理員或內部的CA獲得SSL/TLS證書后, 用正確的值來修改ssl-server.xml和ssl-client.xml文件。

HDFS外的靜態數據加密

在啟用了所有Apache Hadoop組件中的傳輸數據和靜態數據加密后, 用戶需要配置的最后一方面就是HDFS之外的數據加密。

雖然有些企業可能會考慮加密硬盤, 但并不普遍, 而且還要求專門的和更為昂貴的硬件。相反, 可以充分利用Linux的本地靜態數據加密特性, 即dm-crypt。

hadoop畢業論文題目范文第5篇

大數據的概念最早是由麥肯錫這家公司提出的, 他們指出:“數據, 已經滲透到當今每一個行業和業務職能領域, 成為重要的生產因素, 人們對于海量數據的挖掘和運用, 預示著新一波生產率增長和消費者盈余浪潮的到來。”

進入2012年, 大數據的概念開始被越來越多的提及, 甚至已經上了紐約時報和華爾街日報的專欄封面。隨著系統信息化的建設, 海量數據正呈現井噴式增長, 如何消化和分析這些數據從中提煉出有價值的信息是企業所要面臨的新的難題和挑戰。

首先面臨的挑戰來自于系統硬件, 雖然硬盤的存儲容量不斷增加, 但是磁盤的尋址效率卻沒有隨之提高, 因此當數據處于一個較大規模的時候, 數據的定位和讀取會變得非常緩慢。這是硬件本身的局限性, 很難從軟件方面得到突破點, 然而同樣從硬件的角度考慮, 雖然磁盤的尋址效率發展緩慢, 但是傳輸效率卻相對迅速一些, 因此基于大數據的處理, 我們可以嘗試使用另外一種訪問方式——基于流式讀取[1]。

兩種方式有什么區別, 或許有些人還不太清楚, 基于磁盤尋址最典型的應用便是關系數據庫, 首先定位到數據的存儲地址, 然后從這個地址開始做局部的數據處理;而基于流式訪問首先獲取數據的輸入流, 通過該流來讀取所有數據, 做全局的數據分析, 沒有數據尋址的過程。

基于流的訪問方式雖然可以不用考慮磁盤的尋址時間, 但是缺陷也十分的明顯, 比如會消耗很多的計算機資源 (cpu, 內存等) , 針對這些缺陷, 我們能想到的最直接的處理方式便是將數據源進行切分, 分散到多臺機器上進行并行的讀取, 這樣不但加快了數據的讀取效率, 也緩解了單臺機器性能的不足。但是, 經過這種方式處理之后, 又會帶來新的難題和挑戰:

首先, 數據分散部署之后, 有可能會帶來數據遺失的風險。

其次, 對數據片段的解析需要有一個聚合的操作, 來匯總最后的結果。

如何解決這些難題, 正是hadoop框架的功能職責。

Hadoop框架提供了一種簡單的編程模型, 用來對大數據集進行分布式處理;它的處理能力是可擴充的, 由一臺機器擴充到成千上萬臺的集群, 集群中的每臺機器都會參與存儲和計算[2]。從功能角度來看hadoop主要具備兩方面的特性, 存儲和計算。存儲邏輯用到的是HDFS子框架, 計算邏輯用到的是Map Reduce子框架, 每個子框架分別解決了上述難點。

2 HDFS子框架

2.1 體系結構

由圖片可以看到HDFS主要包含這樣幾個功能組件

Namenode, 存儲文檔的元數據信息, 還有整個文件系統的目錄結構。

Data Node, 存儲文檔塊信息, 并且文檔塊之間是有冗余備份的。

這里面提到了文檔塊的概念, 同本地文件系統一樣, HDFS也是按塊存儲的, 只不過塊的大小設置的相對大一些, 默認為64M。如果一個文件不足64M, 那么它只存儲在一個塊中, 而且并不會占用64M的磁盤空間, 這一點需要注意, HDFS不適用于小文件存儲的原因并不是因為小文件消耗磁盤空間, 而是因為小文件占用了太多的塊信息, 每個文檔塊的元數據是會存儲在namenode的內存里的, 因此當文檔塊較多的時候會十分消耗namenode的內存。

從功能結構來看, namenode提供了數據定位的功能, datanode提供數據傳輸, 也就是客戶端在訪問文件系統的時候是直接從datanode里面讀取數據的, 而不是namenode。

2.2 IO操作

2.2.1 hdfs讀取文件流程

首先, 連接到分布式文件系統, 從namenode里獲取要訪問的文件由哪些塊組成, 每一個塊的存儲地址是多少。

然后, 定位到指定的datanode去讀取文件。

注意:每個塊的存儲地址是在hadoop啟動之后才加載到namenode的內存里的, 而不是持久化存儲到namenode本地。namenode和datanode具備心跳通信的功能, 它會定時從datanode那里收到一些反饋, 包括block的存儲地址信息等等。

2.2.2 hdfs寫文件流程

首先, 同樣是連接到分布式文件系統, 向namenode發送創建文件的命令。

namenode保存文檔的元數據信息之后會調度具體的datanode來執行數據流的寫入操作, 寫入成功后, 需要執行冗余備份, 將Block復制多份, 每一分存儲到不同的機器節點中, 防止單點故障的出現。

使用HDFS來存儲數據, 每個block至少要備份一份, 默認是3份, 如果沒有指定備份, 或者備份的過程中出現了異常, 則文件的寫入操作不會成功。

2.3 hdfs不適用的場景

2.3.1 低延遲的數據訪問

HDFS主要針對大文件來設計的, 多用于線下的數據分析, 對于線上應用并且及時性要求較高的系統, 可嘗試使用Hbase。

2 3.2大量小文件

消耗namenode內存, 可以使用Sequence File或Map File來作為小文件的容器

2.3.3 多線程寫入, 隨機寫入

HDFS系統中, 每個文件只能并發開啟一個Writer, 并且寫入操作只能在文件的末尾進行。

3 Map Reduce子框架

Map Reduce的大體流程是這樣的, 如圖所示:

由圖片可以看到mapreduce執行下來主要包含這樣幾個步驟:

(1) 首先對輸入數據源進行切片。

(2) master調度worker執行map任務。3worker

(3) worker讀取輸入源片段。

(4) worker執行map任務, 將任務輸出保存在本地。

(5) master調度worker執行reduce任務, reduce worker讀取map任務的輸出文件。

(6) 執行reduce任務, 將任務輸出保存到HDFS。

若對流程細節進行深究, 可以得到這樣一張流程圖:

角色描述:

Job Client, 執行任務的客戶端。

Job Tracker, 任務調度器。

Task Tracker, 任務跟蹤器。

Task, 具體的任務 (Map OR Reduce) 。

從生命周期的角度來看, mapreduce流程大概經歷這樣幾個階段:初始化、分配、執行、反饋、成功與失敗的后續處理。

每個階段所做的事情大致如下

3.1 任務初始化

3.1.1 Job Client對數據源進行切片

切片信息由Input Split對象封裝, 接口定義如下:

可以看到split并不包含具體的數據信息, 而只是包含數據的引用, map任務會根據引用地址去加載數據。

Input Split是由Input Format來負責創建。

Job Client通過get Splits方法來計算切片信息, 切片默認大小和HDFS的塊大小相同 (64M) , 這樣有利于map任務的本地化執行, 無需通過網絡傳遞數據

切片成功后, Job Client會將切片信息傳送至Job Tracker

3.1.2 通過job Tracker生成job Id。

Job Tracker.get New Job Id ()

3.1.3 檢查輸出目錄和輸入數據源是否存在。

輸出目錄已存在, 系統拋出異常。

輸入源目錄不存在, 系統拋出異常。

3.1.4 拷貝任務資源到job Tracker機

器上 (封裝任務的jar包、集群配置文件、輸入源切片信息) 。

3.2 任務分配

Job Tracker遍歷每一個Input Split, 根據其記錄的引用地址選擇距離最近的Task Tracker去執行, 理想情況下切片信息就在Task Tracker的本地, 這樣節省了網絡數據傳輸的時間。

Job Tracker和Task Tracker之間是有心跳通信的邏輯的, 通過彼此間不停的通信, Job Tracker可以判斷出哪些Task Tracker正在執行任務, 哪些Task Tracker處于空閑狀態, 以此來合理分配任務。

3.3 任務執行

Task Tracker接到任務后開始執行如下操作:

3.3.1

將任務jar包從HDFS拷貝到本地并進行解壓

3.3.2

創建一個新的JVM來執行具體的任務, 這樣做的好處是即使所執行的任務出現了異常, 也不會影響Task Tracker的運行使用。

如果所執行的任務是map任務, 則處理流程大致如下:

首先加載Input Split記錄的數據源切片, 通過Input Format的get Record Reader () 方法, 獲取到Reader后, 執行如下操作:

3.4 執行反饋

mapreduce的執行是一個漫長的過程, 執行期間會將任務的進度反饋給用戶。

任務結束后, 控制臺會打印Counter信息, 方便用戶以全局的視角來審查任務。

若執行成功:

清理Map Reduce本地存儲 (mapred.local.dir屬性指定的目錄) 。

清理map任務的輸出文件。

若執行失敗:

(1) 如果task出現問題 (map或者reduce)

錯誤可能原因:用戶代碼出現異常;任務超過mapred.task.timeout指定的時間依然沒有返回

錯誤處理:

首先將錯誤信息寫入日志

然后jobtracker會調度其他tasktracker來重新執行次任務, 如果失敗次數超過4次 (通過mapred.map.max.attempts和mapred.reduce.max.attempts屬性來設置, 默認為4) , 則job以失敗告終。

如果系統不想以這種方式結束退出, 而是想通過Task成功數的百分比來決定job是否通過, 則可以指定如下兩個屬性:

mapred.max.map.failures.percentmap任務最大失敗率

mapred.max.reduce.failures.percent

任務最大失敗率

如果失敗比率超過指定的值, 則job以失敗告終。

(2) 如果是tasktracker出現問題

判斷問題的依據:和jobtracker不再心跳通信jobtracker將該tasktracker從資源池中移除, 以后不在調度它。

(3) jobtracker出現問題

jobtracker作為系統的單點如果出現問題也是最為嚴重的問題, 系統將處于癱瘓。

參考文獻

[1]TomWhite.Hadoop權威指南 (第二版) [M].著清華大學出版社2011, 7.

hadoop畢業論文題目范文第6篇

0 引言

隨著我國航空航天事業的發展, 遙感數據正以指數級增長, 傳統的遙感數據處理效率已經很難滿足人們的需要。而在近年隨著大數據時代的到來, 云計算得到了迅猛的發展, 這也為處理海量遙感數據提供了有效可行的方法。云計算是一種新型的計算模式, 通過互聯網將計算機資源, 數據, 應用交付給用戶, 它是并行計算、分布式計算、網格計算的綜合發展。Hadoop[1]是Apache開源組織的一個分布式計算開源框架, 它是一組相關項目的統稱, 包括HDFS、Map Reduce、HBase、Hive、Zoo Keeper等。Hadoop基于云體系中的一種Paa S (平臺即服務) 技術實現的云計算平臺為用戶提供一種分布式存儲和計算的編程環境, 使開發人員可以輕松地編寫可處理海量數據的分布式并行程序, 并將其運行于由成百上千個結點組成的大規模計算機集群上。

1 Hadoop介紹

本文主要用到的Hadoop項目中的HDFS和Map Reduce, 實驗環境為Hadoop1.0。HDFS[2]是Hadoop Distributed File System的簡稱, 是整個開源Hadoop項目的數據存儲基礎。

HDFS體系采用master/slave架構, 一個HDFS集群由一個Name Node和許多Data Node組成。Data Node按塊 (block) 存儲數據文件, 塊文件大小可配置, 默認的塊大小為64M, 同時每個塊在不同的Data Node保留三個副本。Name Node存儲數據文件和塊的命名空間, 文件到塊的映射和每個塊副本的位置信息等元數據??蛻舳送ㄟ^與Name Node和Data Node的交互來訪問這個文件系統。不同節點間的通信采用用PRC (Remote Procedure Call) 協議。

Map Reduce[3]是一個使用Java編寫的軟件框架, 基于它開發的應用程序能夠運行在由上千上萬個商用機器組成的大型集群上, 并以一種高效可靠容錯的方式并行處理大數據集。Map Reduce計算模式的基本思想是:將計算任務分解為Map和Reduce兩個階段。Map實現處理數據分塊映射為另外一組數據, 用戶根據實際應用在Map中定義映射規則和滿足用戶需求的結果數據, 從而實現任務的分級;Reduce實現映射結果集的規約與合并, 在其中定義規約和合并規則, 完成到分解后多任務處理的匯總, 獲得最終的計算結果??梢钥闯? Map Reduce計算模式框架具有內在的并行性, 這種并行模式簡單、高效, 具有很好的跨平臺和可擴展特點。Map Reduce框架由一個單獨的master Job Tracker和每個集群節點一個的slave Task Trac ker共同組成。master負責調度構成一個作業的所有任務, 這些任務分布在不同的slave上, master監控它們的執行, 重新執行已經失敗的任務。而slave僅負責執行由master指派的任務。一個Map Reduce作業 (job) 通常會把輸入的數據集切分為若干獨立的數據塊, 由map任務 (task) 以完全并行的方式處理它們??蚣軙apper (map任務執行器) 的輸出的臨時數據結果先進行排序, 然后把結果輸入給reduce任務, 這個過程稱為shuffle。reducer (reduce任務執行器) 負責處理接受到的臨時數據, 并將最終結果寫入HDFS中。同時為了減少shuffle過程的網絡數據傳輸, 根據作業需要可以對map結果在本地添加combiner。combiner相當于本地的reducer, combiner執行的結果在進行shuffle之后傳遞給reduce任務。通常作業的輸入和輸出都會被存儲在文件系統中。整個Map Reduce框架負責所有任務的管理、調度及監控, 以及重新執行已經失敗的任務。整個Map Reduce應用程序運行流程如圖1所示。

2 系統設計與實現

2.1 遙感數據存儲

由于遙感數據[4]像元的分布即代表地理位置, 如果直接將遙感數據存儲到Hadoop中, Hadoop會以輸入字節流的順序對柵格數據進行分塊, 相鄰的像元可能分布在不同節點的不同塊中, 空間關系無法保留, 無法對其進行空間分析。為了保持遙感數據的空間特征, 可以先對遙感數據進行整體塊狀劃分, 每個塊對應HDFS中的一個block, block大小采用統一的某個值;其次, 每個塊內部繼續進行范圍相同的子塊狀劃分, 每個子塊對應一個tile[5], 每個tile的范圍是256*256像元, 即對遙感數據的處理的最小單位。圖2為block中索引數據結構, 其中block header存儲該block的基本地理信息、tile數據起始位置和tile index數據起始位置信息, tile index記錄tile在block中的偏移量信息。

2.2 遙感數據并行處理

利用Hadoop實現海量遙感數據的并行化處理, 主要包括數據輸入、處理和數據輸出階段, 具體過程如下[6]。

1) 輸入文件和格式:輸入數據是存儲在HDFS中的遙感數據, 并且需要用Map Reduce的分布式緩存機制[7]加載元數據, 從元數據中獲取遙感數據的范圍、波段、遙感數據集到block的映射信息。Map Reduce并行編程模型中包含用于并行程序開發的各種接口和類。其中Input Format類指定輸入格式。該類包含is Splitable和create Record Reader兩個主要方法, 前一個方法用于指定數據是否可以分片;后一個方法用于創建一個記錄讀取器, 將輸入文件與記錄讀取相關聯。一個輸入分片匹配HDFS中的一個block。Map Reduce并行框架使用自定義的Filelnput Format的子類Raster Input Format以block為單位來拆分文件。每個分片劃分為若干記錄, 每個記錄就是一個key/value對。

2) 記錄讀取器:記錄讀取器中實現了數據塊到鍵值對的轉換處理, 通過記錄讀取器的轉換, Map任務得到適合讀取的鍵值對。記錄讀取器Block Record Reader繼承自Record Reader, 它會在輸入分片上重復調用, 每條記錄對應一個tile。每次調用記錄讀取器的同時, 位于Map任務中的映射函數均會被調用, 直至數據讀取完畢。

3) Mapper:在自定義輸入格式、數據分塊方法后, 經key/value對轉換處理, 數據進入Map Reduce模型中的Map階段。根據具體的應用需要用戶自定義map方式, 以實現遙感數據的并行處理。Map階段的中間結果會寫入磁盤, 寫入磁盤前, 線程會根據數據需要傳送到的Reducer把數據劃分為相應的分區, 這個分區通過Partitioner指導實現。每個分區中, 數據會按key進行內排序。經過分區與排序的子集合在Job Tracker的統一調度之下, 分配給不同的計算節點進行Reducer階段的計算, 這個移動Map輸出的中間結果到Reducer階段的過程稱之為Shuffle。

4) 排序:排序主要有兩個過程, 一個是對Map階段生成的中間計算結果進行分區, 即將具有相同Key值的中間計算結果分為一組;二是進入Reduce階段, 對Reducer接收到的來源不同的數據進行規約合并排序操作。

5) Reduce:Reduce由用戶負責實現, 以Map階段產生的中間計算結果進行Shuffle過程后的數據為輸入源, 通過用戶自定義的規約方法進行數據的規約與合并, 用戶需要根據具體應用設計reduce方法。

6) 輸出格式:輸出格式與輸入格式的功能相似, 應用Map Reduce模型中輸出格式類將合并后的數據寫到HDFS中。通過Job對象中的set Output Format方法設置輸出數據格式類型, 通過File Output Format類的set Output Path方法設置并行計算后輸出文件的路徑。輸出數據格式類型采用繼承自File Output Format的Raster Out Format指定, 對每個記錄的處理結果通過其中的內部類Tile Record Writer寫出到磁盤中。一個Reduce任務對應一個輸出文件。當Map Reduce應用有多個Reduce任務時, 需要各個Reduce任務的結果進行歸并, 在Partition中指定發送到相應Reducer的tile, 歸并時可直接采用hadoop自帶的get Merge命令執行。

7) 輸出結果的轉換。如果最終輸出的是對柵格進行像元級或鄰域級操作結果的遙感數據, 按6) 輸出格式輸出的是以tile為單位的遙感數據, 需要對該數據進行一次轉換, 恢復為按像元組織的遙感數據結果。

3 實驗結果分析

在百兆的局域網內用5臺計算機搭建了5個節點的Hadoop云平臺, 操作系統為Cent OS, 安裝并且配置了Hadoop1.0.0。每臺電腦CPU為Intel (R) Core2 Quad Q9550 2.83GHz, 硬盤250G。其中一個節點名為Master作為Name Node和Job Tracker, 另外4個節點名為Slave1、Slave2、Slave3、Slave4, 分別作為一對Data Node和Task Tracker。研究區域影像范圍23743*23074, 對其進行NDVI指數計算, 實驗結果如圖3所示。

對原圖像截取不同大小的區域, 分別計算在5節點集群中NDVI指數計算時間隨數據量的變化, 如圖4, 可以看出, 隨著數據量的不斷增加, 計算時間呈線性增長。

4 結語

利用Hadoop云平臺可以實現海量遙感數據的并行化處理。由于Hadoop節點的可伸縮性, 使得整個云平臺提供的計算和存儲能力近乎是無限的。隨著遙感數據的增加, 只需增加云平臺的節點數, 就可以使整個云平臺的處理性能保持不變。隨著Hadoop2.0的發布, 其性能得到了更加完善的優化, 下一步的研究方向將集合新版本的Hadoop對系統的性能調優, 減少不必要的時空開銷, 提高作業處理的效率, 進一步完善系統。

摘要:隨著我國空間技術科學的發展, 遙感數據正以指數級增長, 由于遙感數據的地理信息特征, 海量遙感數據的存儲和處理成了近年的研究熱點, 本文采用在商業上取得出色成績的hadoop云計算平臺來對海量遙感數據進行并行化處理, 完成了系統并行性能測試與分析, 結果表明利用hadoop對海量遙感數據的并行化處理的可行性, 并且還能滿足海量遙感數據并行處理效率要求和高可用性。

關鍵詞:計算機應用,遙感,云計算,Hadoop

參考文獻

[1]王宏宇.Hadoop平臺在云計算中的應用[J].軟件, 2011, 32 (4) :36-38.WANG Hongyu.An application of Hadoop platform in cloud computing[J].Software, 2011, 2011, 32 (4) :36-38. (in Chinese)

[2]Borthakur, D., 2007.The hadoop distributed file system:Architecture and design.Hadoop Project Website 11, 21.

[3]Dean, J., Ghemawat, S., 2008.MapReduce:simplified data processing on large clusters.Commun.ACM 51 (1) , 107-113.

[4]霍樹民基于Hadoop的海量影像數據管理關鍵技術研究[D]長沙:國防科學技術大學, 2010Huo Shumin Based on the research on the key technology of massive image data management Hadoop[D]Changsha:National University of defense technology, 2010 (in Chinese)

[5]張廣慶, Hadoop云環境下柵格數據存儲與計算框架研究[D].北京中國科學院地理科學與資源研究所, 2013.Zhang guangqing, Research of the Storage and Computing Framework for Raster Data Based on Hadoop Cloud[D].Beijing The University of Chinese Academy of Sciences, 2013. (in Chinese)

[6]Dean, J., Ghemawat, S., 2008.MapReduce:simplified data processing on large clusters.Commun.ACM 51 (1) , 107-113.

上一篇:工商管理有哪些論文題目范文下一篇:關于疾病診斷的論文題目范文

91尤物免费视频-97这里有精品视频-99久久婷婷国产综合亚洲-国产91精品老熟女泄火