国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Hadoop的海量圖像處理研究

2018-11-21 06:41郝林倩王明輝
安陽師范學(xué)院學(xué)報 2018年5期
關(guān)鍵詞:鍵值分片海量

郝林倩,王明輝

(1.福建船政交通職業(yè)學(xué)院,福建 福州 350007;2.四川大學(xué),四川 成都 610065)

互聯(lián)網(wǎng)的快速發(fā)展讓我們進入了大數(shù)據(jù)時代,越來越多的人通過圖像、文字和視頻記錄生活點滴,大量的網(wǎng)絡(luò)圖像信息有助于互聯(lián)網(wǎng)公司準(zhǔn)確把握商業(yè)營銷和發(fā)展方向[1]。對于海量圖像數(shù)據(jù),單一服務(wù)器已經(jīng)遠遠無法滿足用戶需要,互聯(lián)網(wǎng)公司和科研機構(gòu)亟需解決的一個問題就是存儲和分析海量圖像。Hadoop是一種開源的分布式處理平臺,包括分布式文件系統(tǒng)HDFS和計算框架MapReduce,用戶可以快速完成分布式任務(wù)。Hadoop平臺具有良好的擴展性,集群構(gòu)建與多臺服務(wù)器上,可以同時管理上千臺服務(wù)器,提供大容量存儲服務(wù),也可以將復(fù)雜的運算問題分發(fā)到不同服務(wù)器上操作,提升運算速度。在一個規(guī)模較大的服務(wù)器集群中,如果一臺服務(wù)器出現(xiàn)問題,那么Hadoop能夠自動從其他服務(wù)器上訪問數(shù)據(jù),提高數(shù)據(jù)存儲的魯棒性,容錯性比較高。Hadoop平臺具有高易用性,API服務(wù)非常豐富,例如文件操作、系統(tǒng)管理、MapReduce任務(wù)管理等等,用戶分布式程序的開發(fā)相對容易。Hadoop在海量數(shù)據(jù)存儲和計算方面具有突出的優(yōu)勢,本文借助OpenCV中的現(xiàn)有函數(shù)來完成圖像處理,能夠?qū)崿F(xiàn)海量圖像的存儲、數(shù)據(jù)管理、計算和可視化展示。Hadoop平臺并不能直接地用于處理圖像,首先要設(shè)計適用于Hadoop平臺的圖像數(shù)據(jù)類型,然后借助OpenCV簡化圖像處理過程[2-3]。

1 Hadoop平臺與數(shù)字圖像處理

1.1 分布式文件系統(tǒng)

HDFS是Hadoop的文件存儲系統(tǒng),為Hadoop系統(tǒng)及其上層應(yīng)用提供了穩(wěn)定可靠的存儲保障。HDFS的硬件來源于商業(yè)硬件,數(shù)據(jù)訪問能力非常強,在容錯和吞吐量方面具有突出優(yōu)勢,能夠同時存儲海量數(shù)據(jù)。

HDFS的基本架構(gòu)為主從式,包括一個主節(jié)點以及多個從節(jié)點,主節(jié)點為NameNode,主要是完成元信息維護功能,從節(jié)點為DataNode是存儲數(shù)據(jù)的區(qū)域,并且及時地報告節(jié)點狀態(tài)給主節(jié)點。如果從節(jié)點超過固定的時間沒有將節(jié)點狀態(tài)發(fā)送給主節(jié)點,那么會自動判斷從節(jié)點宕機,會被移出系統(tǒng),并且自動將這個從節(jié)點的信息復(fù)制保存在其他節(jié)點[4]。

圖1 HDFS框架結(jié)構(gòu)示意圖

HDFS可以將文件拆分成固定大小的塊,然后按照負載均衡算法將這些塊存儲在不同的DataNode上,為了確保數(shù)據(jù)可靠,同樣的塊要分別存放在不同的DataNode上。數(shù)據(jù)塊的存放原則是其中一個存放在輸出節(jié)點上,同一個機架下的不同存儲器上存儲一份,不同機架上的存儲器中存儲一份。不同數(shù)據(jù)塊對應(yīng)不同的編號,所有鏡像文件要存儲在本地磁盤上。

文件讀寫同時涉及到DataNode、NameNode和客戶端之間的交互,建立RPC通信通道,現(xiàn)有系統(tǒng)中已經(jīng)封裝了簡單的通信接口,所以通過客戶端實現(xiàn)文件讀寫比較簡單。文件讀寫的流程分別如圖2中的a和b所示。

圖2(a) HDFS讀操作流程示意圖 圖2(b) HDFS寫操作流程示意圖

1.2 分布式計算框MapReduce

MapReduce屬于Hadoop海量數(shù)據(jù)處理時的基礎(chǔ)模型,能提供分布式計算服務(wù)。MapReduce編程模型中,底層具有良好的程序封裝。用戶在實踐過程中,將需要的運算算法轉(zhuǎn)換成為MapReduce的程序,就可以完成計算。MapReduce模型的各項操作都是在明確的框架中自動完成的。MapReduce可以讓每一個節(jié)點都參與到大數(shù)據(jù)運算過程中,通過分布式運算方式有效提升效率,節(jié)點越多,運算能力越強。

為了拓展MapReduce的使用范圍,降低編程的難度,系統(tǒng)不僅能夠支持Java編程語言,同時也支持Streaming運行。Streaming運行方式下,Ruby和Python腳本語言都能夠運行。Unix的標(biāo)準(zhǔn)輸入和輸出能夠與其他程序建立交互接口,可以通過其他語言來讀取和輸出數(shù)據(jù)[5]。MapReduce按照分而治之的思想建設(shè),其工作可以分為兩個部分,分別是Map和Reduce。

1.3 數(shù)字圖像處理

數(shù)字圖像是指用工業(yè)相機、攝像機、掃描儀等設(shè)備經(jīng)過拍攝得到的一個大的二維數(shù)組,該數(shù)組的元素稱為像素,其值稱為灰度值。當(dāng)今社會,信息化發(fā)展迅速,計算機在信息處理過程中發(fā)揮著重要作用,計算機數(shù)字圖像處理技術(shù)的發(fā)展也越來越快,在生活和生產(chǎn)中應(yīng)用逐漸普及。例如,指紋識別打卡系統(tǒng)、售票機自動識別紙幣、電影特效等領(lǐng)域都隨處可見圖像處理技術(shù)。

在互聯(lián)網(wǎng)快速發(fā)展的背景下,互聯(lián)網(wǎng)上積累了大量來自于用戶的海量數(shù)據(jù),如何挖掘這些圖像背后的數(shù)據(jù)就顯得非常重要。圖像數(shù)據(jù)挖掘是從大量圖像數(shù)據(jù)中挖掘和提取有用信息,這一技術(shù)在醫(yī)療、遙感等領(lǐng)域應(yīng)用非常廣泛。數(shù)據(jù)挖掘算法首先需要提取待挖掘數(shù)據(jù)的特征。圖像特征可以分為三大類:統(tǒng)計特征、視覺特征、變換系數(shù)。統(tǒng)計特征包括圖像的灰度直方圖特征、矩特征。視覺特征可以分為三種:顏色特征、紋理特征和形狀特征[6,7]。

2 圖像鍵值類型和格式設(shè)計

2.1 圖像鍵值類型

MapReduce編程模型包括Map和Reduce兩個過程,每一個環(huán)節(jié)的輸入輸出都是鍵值。如果Map的輸入值是鍵值,那么輸出的是一個或者多個鍵值對。Reduce過程就是輸入的鍵是現(xiàn)有鍵的對集合,然后對現(xiàn)有鍵值進行歸集操作,最終輸出一個或者多個鍵值對。

在分布式計算過程中,鍵值對在不同服務(wù)器之間傳送,處理之后的新的鍵值寫入本地磁盤。所有的鍵值對之間需要建立序列化的接口,可以將結(jié)構(gòu)化的數(shù)據(jù)轉(zhuǎn)換為字節(jié)流,持久保持在磁盤中,也可以支持網(wǎng)絡(luò)傳播。從Map到Reduce輸出數(shù)據(jù)的過程被稱為Shuffle,Hadoop平臺中的所有鍵值類型必須實現(xiàn)WritableCmparable接口,鍵值必須實現(xiàn)Writable接口。

Hadoop中并沒有提供圖像的數(shù)據(jù)類型,所以要改編數(shù)據(jù)的類型。在MapReduce程序設(shè)計的過程中,鍵為圖像名,值為圖像的內(nèi)容。按照文件名稱也就是鍵可以將圖像分組,并且圖像名稱較小,可以實現(xiàn)高效排列。在Java語言中沒有涉及用于圖像處理的數(shù)據(jù)類型和函數(shù),所以需要從最基礎(chǔ)的圖像像素開始進行底層處理,這是非常復(fù)雜的。因此,在本文研究中,將第三方的軟件OpenCV引入到Hadoop平臺中,便于進行圖像的預(yù)處理、圖像的特征提取以及圖像數(shù)據(jù)挖掘等。

圖像數(shù)據(jù)類型包括RawImage和MatImage。RawImage類用于存儲圖像文件的二進制數(shù)據(jù),輸入流或者本地的圖像路徑都可以作為其函數(shù)構(gòu)造參數(shù),可以將讀取到的圖像數(shù)據(jù)存儲到Rawdata數(shù)組中,然后利用Getrawdata函數(shù)獲取二進制數(shù)據(jù)。MatImage類是集成于OpenCV,能夠?qū)崿F(xiàn)Writable接口,可以實現(xiàn)對于Mat的序列化,支持在Hadoop平臺上存儲圖像或者矩陣數(shù)據(jù)。RawImage存儲的所有圖像都是經(jīng)過壓縮編碼的二進制數(shù)據(jù),占磁盤空間比較少,適用于處理海量圖像。MatImage能夠存儲矩陣,不需要圖像編碼,存儲的元素類型比較多樣,但是比較適用于少量圖像集。在實際應(yīng)用中,可以按照需要選擇合適的數(shù)據(jù)類型。

2.2 圖像輸入輸出的格式

MapReduce在執(zhí)行Mapper操作時,必須通過輸入格式將信息解析為鍵值才能傳送給Map,在執(zhí)行Reducer操作時,需要通過圖像輸出格式將鍵值輸出到存儲設(shè)備中。InputFoamat是輸入格式的基類,其中方法GetSplits負責(zé)將輸入的數(shù)據(jù)分片處理,方法CreatRecordReader負責(zé)將被分片解析為鍵值對。

MapReduce的輸出格式基類為OutputFoamat,屬于抽象類,如果方法CheckOutputSpecs負責(zé)檢測是否設(shè)置好輸出路徑、是否存在輸出文件,GetRecordWriter方法負責(zé)將輸出的鍵值持久化保存。

3 Hadoop數(shù)字圖像處理平臺設(shè)計

基于Hadoop的海量圖像處理平臺,能夠?qū)崿F(xiàn)圖像的基本處理、分析以及信息挖掘任務(wù)。本文采用比較成熟的Hadoop平臺,利用本系統(tǒng)設(shè)計,簡化開發(fā)工作。

3.1 平臺技術(shù)架構(gòu)設(shè)計

基于Hadoop的海量圖像處理平臺的底層為分布式文件系統(tǒng),HDFS為上層應(yīng)用提供分布式存儲,處理結(jié)束后的圖像也保存在HDFS上。圖像梳理部分提供圖像數(shù)據(jù)類型,并且結(jié)合第三方軟件OpenCV,直接引用其中的圖像處理函數(shù)。圖像輸入和輸出格式將圖像解析為鍵值,然后利用MapReduce來處理圖像,然后通過圖像輸出格式將新圖像存儲起來。MapReduce提供的是分布式框架,先分片化處理輸入的圖像集,然后進入Mapper處理環(huán)節(jié),對運行全過程進行監(jiān)控。在分布式計算框架這一層,可以結(jié)合OpenCV實現(xiàn)圖像處理。最上層的是Mabout,為圖像分析和圖像信息挖掘提供支撐。

圖3 基于Hadoop的海量圖像處理平臺技術(shù)架構(gòu)示意圖

3.2 模塊設(shè)計

圖像處理平臺共包括四個模塊,分別是圖像導(dǎo)入層、圖像管理層、圖像計算層以及展示層。

圖像的導(dǎo)入模塊負責(zé)將圖像接入到集群上,將待處理圖像存儲到HDFS上。這些待處理圖像位于服務(wù)器上,可以通過網(wǎng)絡(luò)收集圖像,然后通過API將圖像寫入集群。可以采用多線程同時運行的方式來提高圖像傳輸效率。如果待處理的圖像位于本地,那么也可以利用Hadoop的命令直接上傳圖像文件。

圖像管理層主要是對存儲圖像進行刪除、更新以及合并等操作,每一個導(dǎo)入的圖像都是獨立的小文件,如果圖像為海量圖像,就將這些小文件合并成一個大的SequenceFile文件。圖像較多時,可以采用MapReduce程序來處理。圖像導(dǎo)入和管理層負責(zé)存儲與管理,圖像計算層是核心計算部分,主要完成圖像處理任務(wù),例如圖像的初始化、圖像變換、圖像特征提取等,基本都是通過MapReduce程序來完成任務(wù)。圖像展示層是用于展示存儲的圖像,可以將圖像文件直觀地呈現(xiàn)出來,便于觀察和分析輸出結(jié)果。

3.3 計算層圖像處理

Hadoop平臺上的圖像處理流程,第一環(huán)節(jié)是通過獨立存儲或者打包圖像的方式輸入圖像,然后進行圖像計算,最終輸出圖像處理結(jié)果,輸出的圖像可以通過獨立存儲、打包、輸出圖像特征的方式輸出。

圖4 圖像處理流程示意圖

3.4 驗證分析

在實驗室環(huán)境中配置一個服務(wù)器,通過橋式連接的模式安裝9臺虛擬機,集群為分布式模式,內(nèi)存4G,硬盤500G,操作系統(tǒng)為Ubuntu12.04,開發(fā)環(huán)境為Hadoop2.4.0和jdk1.6.0_32。將圖像分別分為大小不等的分片,通過系統(tǒng)運行驗證其運行速度和任務(wù)時長。

表1 不同分片方案對應(yīng)的處理結(jié)果

可以看出,分片大小增加的同時,片數(shù)會減小,每個Map的平均運行時間會增加。不管分片大小如何改變,最終輸出的總量不變,Reducer個數(shù)也不變,平均的Reducer時間基本不變。

4 結(jié)論

基于Hadoop的海量圖像處理平臺能夠完成圖像基本處理,結(jié)合Mathout也能夠完成更深層次的數(shù)據(jù)挖掘,系統(tǒng)具有良好的通用性,該平臺適用于大多數(shù)圖像處理場景,這種分布式的圖像處理平臺相對于單機圖像處理具有更好的效率,能處理海量數(shù)據(jù),滿足生產(chǎn)需要,適應(yīng)大數(shù)據(jù)時代的發(fā)展潮流。

猜你喜歡
鍵值分片海量
上下分片與詞的時空佈局
一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
利用狀態(tài)歸約處理跨分片交易的多輪驗證方案①
物聯(lián)網(wǎng)區(qū)塊鏈中基于演化博弈的分片算法
非請勿進 為注冊表的重要鍵值上把“鎖”
海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
基于模糊二分查找的幀分片算法設(shè)計與實現(xiàn)
“海量+”:大學(xué)生品格提升的浸潤方——以高職藝術(shù)設(shè)計專業(yè)為例
一鍵直達 Windows 10注冊表編輯高招
一個圖形所蘊含的“海量”巧題