999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于HDFS+HBase+Redis 的海量車輛小圖片的存儲與檢索系統設計

2020-08-07 14:43:54郭東新張偉荊忠航
現代計算機 2020年18期
關鍵詞:優化

郭東新,張偉,2,荊忠航

(1.北京信息科技大學計算機學院,北京100101;2.北京信息科技大學,北京材料基因工程高精尖創新中心,北京100101)

0 引言

目前,交通和公安等部門在存儲和查詢海量車輛小圖片時,隨著訪問需求和車輛信息的快速增長,對效率的要求越來越高。同時,在大數據平臺中存儲小圖片時,由于每張車輛圖片的大小均小于HDFS 的數據塊大小(默認為64MB),而且小圖片的數據量為大文件的幾十倍,導致NameNode 內存瓶頸、MapReduce 性能降低和高存儲時間三個方面[1-4]的問題出現。

因此,研究如何優化車輛小圖片的存儲,可以提高小圖片的存儲和讀取效率,有助于交通和公安等部對于海量小文件存儲優化的方法,國內外學者已經開展了研究,并提出了一系列操作和方法,主要分為改進系統結構、小文件合并和針對特定場景的小文件合并三種方式。

ElKafrawy P M[5]提出了一種新的結構HDFSX,管理主存儲器的元數據。當元數據量達到閾值時,將其余元數據存儲在閃存上,從而解決主存儲器上元數據的內存瓶頸問題。Bok K[6]提出了一種分布式緩存方案,使用客戶端和數據節點緩存元數據,從而有效地提高HDFS 中小文件的訪問性能。Fu S[7]提出了一個扁平的輕量級文件系統(iFlatLFS),設計一個簡單的元數據方案和一個扁平的存儲體系結構進行管理小文件,從而顯著減少了元數據的數量。上述方法通過改變系統結構,可以有效地解決小文件問題,但是需要改變文件系統或者在現有文件系統上增加額外的緩存節點,增加了系統的建設成本和復雜性。

鄭通[8]提出了小文件合并為大文件進行存儲的方案,同時建立了文件預取機制來提高文件讀取速度。程晗[9]通過Redis 設置三類隊列合并智慧醫療小文件,同時通過改進的AHP 算法進行系統負載預測判斷。Sheoran S[10]提出了將小文件合并成MapFile 進行存儲的方案。Cheng W[11]提出了一種基于索引機制的小文件合并存儲方案,通過創建一個索引文件來保存小文件的索引信息。上述方法都是先將小文件合并成大文件,再存儲大文件,有效地解決了內存瓶頸問題。但是合并小文件時沒有考慮小文件間的關聯關系,還可進一步提高文件讀取速度。

馬振[12]提出了變尺度堆棧算法VSSA 合并小文件,該算法以迭代的方法選取待合并隊列中最大的小文件進行合并,充分地利用數據塊存儲空間。游小容[13]利用教育資源中小文件的前赴后繼關系將小文件合并為大文件。Xiong L[14]利用時空范圍合并時空數據小文件。Ahad M A[15]提出一種動態合并技術,根據小文件的大小和類型進行合并。Fan Y[16]設計了一個小文件處理系統SFPS,合并相似的小文件,可以減少小文件的數量和冗余數據。Nivedita V[17]根據用戶訪問的優先級建立小文件合并模型。上述方法都是先將特定場景的小文件合并成大文件,再進行存儲,可以根據文件大小和數據間關聯關系進行合并,不僅解決了內存瓶頸問題,還提高了文件讀取速度。但是這種方式只能解決某一特定領域的小文件合并,適用性不高,而且,將合并索引文件與數據塊一起存儲,導致訪問文件數據的速度不快。

綜上可以發現,通過改進系統結構可以解決小文件存儲的問題,但是增加了系統的建設成本和復雜性。通過合并小文件和特定場景下的小文件后再存儲的兩種方式不但有效地解決了內存瓶頸問題,而且提高了文件讀取速度,但是只能解決某一特定領域的文件合并存儲的問題,適用范圍受限制。

因此,本文提出一種基于HDFS+HBase+Redis 的海量車輛小圖片存儲與檢索系統。首先,針對小圖片存儲的問題提出一種基于關聯關系的合并存儲方法,先根據車牌號所屬省份、車身顏色和車型的關聯關系合并小圖片,再存儲到Redis 建立的臨時隊列中,待達到合并文件達到隊列大小時存儲至HDFS 中。然后,提出一種基于冗余策略的存儲優化方法,將每一類的合并文件復制三份,分別存儲在以車牌號所屬省份為索引的存儲區域、以車身顏色為索引的存儲區域和以車型為索引的存儲區域,并將索引信息存儲在HBase中。最后,針對提出的海量車輛小圖片的存儲優化模型設計了一種合理的小圖片檢索流程。可以快速地定位車輛信息,整體了解實時的交通狀況,及時引導車輛的正常行駛。

1 海量小圖片存儲問題分析

當大小為100KB 的小圖片存儲到默認數據塊大小為64MB 的HDFS 中,小圖片實際所占用的硬盤大小為100KB,并非64MB。因此,存儲海量小圖片并不會產生硬盤壓力,但是,會增加HDFS 中NameNode 的內存消耗,而且,在讀取小圖片時會消耗大量時間。

通常,為了方便查找小圖片存儲在哪個數據塊中,將小圖片的文件名,數據塊ID 和數據塊存放位置組成元數據,存儲在HDFS 的Namenode 中。一般情況下元數據的大小為250bytes,但是,如果數據塊默認備份為三個副本數據塊時,新備份的兩個副本的元數據大小則為368bytes。

當n個小圖片進行三備份后存儲在HDFS 中,NameNode 的內存消耗如式(1)所示。隨著小圖片數量n的逐漸增加,NameNode 的內存消耗越來越大。

其中,a表示HDFS 沒有存儲數據時NameNode本身所占內存大小;b表示每個數據塊的列表信息在NameNode 的內存消耗;B表示HDFS 中數據塊大小;fi表示在HDFS 中存儲的n個圖片所占內存大小。

當小圖片數據塊進行一備份后存儲在HDFS 中,讀取n個內存大小為fi的小圖片的總耗時如式(2)所示。隨著小圖片數量n的逐漸增加,訪問NameNode 和DataNode 的次數越來越多,讀取時間越來越長。

其中,Trequ表示NameNode 接收檢索請求的時間消耗;Tquer表示NameNode 查詢元數據的時間消耗;Tresu表示NameNode 返回目標元數據的時間消耗;Tacce表示用戶在DataNode 中檢索目標文件的消耗;Tdata表示DataNode 查詢目標小圖片的時間消耗;Tfile表示DataNode 返回目標小圖片的時間消耗。

根據上述關于NameNode 的內存消耗和小圖片讀取時間的理論分析,可以發現,如果想解決海量小圖片存儲時產生的NameNode 內存消耗和小圖片訪問延遲的兩個問題,需要減少NameNode 的元數據的個數,減少NameNode 的訪問次數和降低DataNode 讀取目標數據塊的時間。

2 海量車輛小圖片的存儲方案

2.1 基于關聯關系的合并存儲

在Hadoop 大數據平臺上存儲海量的車輛小圖片時,由于每張小圖片的大小均小于HDFS 的數據塊大小(64MB),則會出現NameNode 內存瓶頸,MapReduce處理性能降低和存儲耗時太長等問題。現有的方法為了降低NameNode 內存占用較高的問題,一般采用先將小文件合并成大文件,再存儲大文件的過程。該方法可以解決內存瓶頸問題,但是在合并時未考慮圖片之間關聯關系。

因此,本文提出了一種基于關聯關系的合并存儲方法。首先,建立初始臨時隊列,將存入一張初始圖片。然后,判斷待存儲圖片是否與其中一個臨時隊列中的初始圖片具有相同的省份車牌號、相同的車身顏色和相同車型,若完全相同,則將待存儲圖片合并到臨時隊列中,否則新建一個臨時隊列,將待存儲圖片作為新建臨時隊列的初始圖片,重復上述操作,直至所有的待存儲圖片上傳至HDFS 進行存儲。具體的操作步驟如下所示。

(1)初始時,使用Redis 建立一個臨時隊列q0,從小圖片序列P={p0,p1,...,pn}中取出一張圖片p0,進入隊列q0中,作為隊列q0的初始圖片。

(2)從序列qi中取出小圖片pi,然后判斷每次取出的pi與現存所有臨時隊列中的初始圖片是否具有相同省份的車牌號、相同車身顏色和相同車型,若pi與某一個臨時隊列qi中的初始圖片具有相同省份的車牌號、相同車身顏色和相同車型,則pi進入臨時隊列qi中;否則,Redis 新建一個臨時隊列qj,pi進入臨時隊列qj中,作為隊列qj的初始圖片。

(3)當臨時隊列qi接收pi的等待時間超過設置的時間閾值,若超時,將隊列qi中的合并文件上傳至HDFS 進行存儲。

(4)當pi進入臨時隊列qi后,判斷隊列中文件的總大小是否超過設置的HDFS 數據塊大小,若超過,也將隊列qi中的合并文件上傳至HDFS 進行存儲;否則,繼續執行步驟(2)~(4),直至序列P為空;

(5)當序列P為空時,將所有臨時隊列中未達到數據塊大小的合并文件上傳至HDFS 進行存儲。

2.2 基于冗余策略的存儲優化

當合并文件上傳至HDFS 后,隨機地存儲在HDFS中的存儲區域。若查詢紅色車輛的信息,需要訪問所有的存儲區域,若查詢轎車的信息,也需要訪問所有的存儲區域。所以,當車輛小圖片的存儲系統在某一時段進行大量查詢請求時,大大增加了工作節點的任務數。因此,為了提高存儲系統的吞吐率和降低系統負載,本文在不增加額外系統開銷的前提下,利用Hadoop數據塊的三備份機制,設計了一種基于冗余策略的存儲優化模型,如圖1 所示。

圖1 基于冗余策略的存儲優化模型

如圖1 所示,首先,基于冗余策略的存儲優化模型根據Hadoop 數據塊的備份機制,將上傳至HDFS 中的n 類車輛的合并文件數據塊復制成三份,然后將每一類車輛的三份合并文件分別存儲在以車牌號的索引的存儲區域1、以車身顏色為索引的存儲區域2 和以車型為索引的存儲區域3。

2.3 合并存儲的索引建立

當車輛小圖片的合并文件在HDFS 中優化存儲后,為了能夠快速檢索到合并文件中的車輛小圖片,本文還提出了合并索引機制。將合并文件的三份數據塊分別按照車牌號所屬省份、車身顏色和車型建立三種索引信息,并將索引存儲在HBase 中。然而,為了避免在HBase 中出現訪問熱點的問題,將車牌號所屬省份和32 位隨機hash 值組合作為車牌號索引信息的Rowkey 的命名格式,索引信息結構如表1 所示。將車身顏色和32 位隨機hash 值組合作為車身顏色索引信息的Rowkey 的命名格式,索引信息結構如表2 所示。將車型和32 位隨機hash 值組合作為車型索引信息的Rowkey 的命名格式,索引信息如表3 所示。

表1 車牌號所屬省份的索引信息結構

表2 車身顏色的索引信息結構

表3 車型索引信息結構

以表1 所示的車牌所屬省份的索引信息結構為例,每個合并文件的Rowkey 為省份_32 位hash 值,每個Rowkey 記錄了合并文件的數據塊ID、每個小圖片的車牌號、小圖片在合并文件中的偏移量和長度。當用戶需要獲取某一個車牌號的小圖片時,先根據車牌號所屬省份在車牌號索引信息中查找到合并文件的索引記錄,再根據索引記錄中小圖片的偏移量和長度找到小圖片的存儲位置,獲取到小圖片。

3 海量車輛小圖片的檢索方案

基于第2 章提出的海量車輛小圖片的存儲方案,本文給出了對應的車輛小圖片的檢索方案,檢索流程圖如圖2 所示。具體的流程如下所示。

圖2 車輛小圖片的檢索流程

(1)根據小圖片的檢索請求,從Redis 緩存的合并文件的索引中查詢是否存在該小圖片的合并文件,如果存在,獲取合并文件的數據塊ID 和元數據信息,直接訪問DataNode,讀取出小圖片,將圖片返回給用戶。

(2)如果不存在的話,則開始判斷檢索請求的條件,如果檢索條件的個數為1 的話,只需按照檢索條件查詢一個查詢區域,獲取小圖片的存儲地址。假設查找白色的車輛圖片,則只需從以車身顏色為索引的存儲區域篩選出白色車輛的數據塊。

(3)如果檢索條件的個數超過1 時,則按照檢索條件分別從各自的存儲區域查找數據。然后,對分別查找出來的數據進行去重操作:①當查詢條件存在車牌號時,只按照車牌號去重;②當查詢條件不存在車牌號時,則采用加速穩健特征算法(Speed Up Robust Feature,SURF)計算圖片之間的相似度,如果兩張圖片的相似度達到閾值時,進行去重后獲取到小圖片。

(4)讀取出去重后的圖片,將圖片返回給用戶。

(5)根據數據預取機制將該合并文件的索引信息和元數據信息緩存在Redis 中。

4 實驗

4.1 實驗環境

本文搭建了一個實驗平臺,主要用于測試存儲優化方案在存儲小圖片時的內存消耗變化和讀取小圖片的效率變化。實驗平臺的硬件配置是:8G 內存,4 核CPU和200G 的硬盤服務器。實驗數據:小圖片大小訪問是30KB 到40KB。本文實驗以HDFS 的NameNode 的內存占用、小圖片數量和小圖片讀取的時間作為評價指標,將實驗結果與原生HDFS 的實驗結果進行對比。

對于本文提出的存儲優化模型,小圖片讀取的時間包括小圖片的合并時間t1和合并文件存入HDFS 的時間t2,考慮到合并文件中小圖片的數據量S,因此本文提出的存儲優化模型的小圖片平均存儲時間為T=(t1+t2)/S。對于原生HDFS 只直接存儲小圖片,不進行小圖片的合并,因此,小圖片的存儲時間為存儲時間t。

4.2 對比實驗

第一組實驗是為了驗證本文提出的存儲優化方案能夠降低存儲小圖片的內存占用,與原生HDFS 在相同的實驗環境下進行對比實驗,分析隨機讀取小圖片時NameNode 的內存占用情況,對比實驗結果如圖3 所示。

圖3 內存占用對比圖

從圖3 中可以看出,當小圖片數量不超過10000個時,本文提出的存儲優化模型的優化效果并不明顯,但是隨著小圖片的數據量不斷的增加,存儲優化模型比原生HDFS 能夠明顯降低NameNode 的內存占用。

第二組實驗是為了驗證本文提出的存儲優化模型能夠提高小圖片的讀取速率,與原生HDFS 在相同的實驗環境下進行對比實驗,分析小圖片的存儲時間,對比實驗結果如圖4 所示。

圖4 小圖片讀取時間對比圖

從圖4 中可以看出,本文提出的存儲優化模型能夠在小圖片讀取時間上優于原有HDFS。雖然小圖片的合并和索引建立兩個過程消耗了一定的時間,但是,隨著小圖片的數量逐漸增加,建立索引優化了小文件的存儲過程,兩個操作消耗的時間相對于小圖片的存儲時間可以忽略不計。并且,先合并小圖片再存儲可以減少元數據的數據量,從而減少了存儲小圖片時檢索HDFS 空閑塊的時間。在讀取小圖片方面,本文提出的優化方案加入了基于Redis 預取相關小圖片機制,將和正在訪問的數據集有關的小圖片元數據預取在內存中。因此,本文提出的存儲優化模型能夠很好的降低小圖片的讀取時間。

5 結語

為了降低海量車輛小圖片存儲的NameNode 內存消耗和提高小圖片的讀取時間,本文首先對這兩個問題進行了理論分析,可以發現,隨著小圖片數量的逐漸增加,NameNode 的內存消耗越來越大,訪問NameNode和DataNode 的次數越來越多,讀取時間越來越長。然后提出一種基于關聯關系的合并存儲方法,根據車輛小圖片的車牌號所屬省份、車身顏色和車型的關聯關系,合并具有相同信息的小圖片。進一步又提出了基于冗余策略的存儲優化,將合并文件的數據塊進行三備份,按照順序分別存儲在以車牌號所屬省份為索引的存儲區域、以車身顏色為索引的存儲區域和以車型為索引的存儲區域。從而減少了NameNode 的訪問次數。接著,將索引信息存儲在HBase 中,并且在Rowkey 中添加了32 位的hash 值以避免訪問熱點問題的出現。最后,當檢索條件的個數為1 和不為1 時,給出了對應的小圖片檢索流程。

對比實驗結果表明,本文方法不但能夠明顯降低小圖片在HDFS 中存儲時的內存占用,而且讀取小圖片的時間更短。

猜你喜歡
優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
PEMFC流道的多目標優化
能源工程(2022年1期)2022-03-29 01:06:28
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
圍繞“地、業、人”優化產業扶貧
今日農業(2020年16期)2020-12-14 15:04:59
事業單位中固定資產會計處理的優化
消費導刊(2018年8期)2018-05-25 13:20:08
4K HDR性能大幅度優化 JVC DLA-X8 18 BC
幾種常見的負載均衡算法的優化
電子制作(2017年20期)2017-04-26 06:57:45
主站蜘蛛池模板: 久久亚洲精少妇毛片午夜无码| 国产精品极品美女自在线网站| 欧美精品成人一区二区在线观看| 最新日本中文字幕| 在线免费看黄的网站| 欧美亚洲网| 在线一级毛片| 亚洲精品动漫在线观看| 亚洲欧美日本国产综合在线 | 亚洲午夜综合网| 国产aaaaa一级毛片| 日本一区二区三区精品视频| 国产亚洲精品精品精品| 国产精品毛片一区视频播| 欧美色丁香| 国产噜噜噜| 国产精品第| 99视频精品在线观看| 国内精品伊人久久久久7777人| 综合亚洲网| 欧美成人精品一区二区 | 成人精品视频一区二区在线| 欧美日韩成人在线观看| 国产精品免费露脸视频| 91在线国内在线播放老师 | 毛片免费在线| 91成人在线观看视频| 伊人久久大线影院首页| 日韩毛片免费观看| 茄子视频毛片免费观看| 国产精品美女免费视频大全 | 亚洲日韩高清无码| 欧美亚洲一区二区三区导航| 欧美啪啪精品| 91色爱欧美精品www| 自偷自拍三级全三级视频| 欧美日韩午夜| 亚洲首页在线观看| 三级视频中文字幕| 色综合天天综合中文网| 精品1区2区3区| 国产精品蜜臀| 激情无码字幕综合| 国产国拍精品视频免费看| 国产白浆在线观看| 一级毛片基地| 欧美亚洲中文精品三区| 97人人模人人爽人人喊小说| 亚洲综合18p| 激情无码视频在线看| 久久国产av麻豆| 亚洲国产精品一区二区第一页免 | 亚洲国产日韩欧美在线| 999福利激情视频 | 澳门av无码| 欧美专区在线观看| 免费国产一级 片内射老| 久久精品中文字幕少妇| 国产亚洲欧美在线视频| 香蕉久久国产超碰青草| 日本不卡在线视频| 亚洲美女一区二区三区| 色综合五月婷婷| 日韩高清一区 | 精品福利视频网| 高清无码不卡视频| 精品人妻一区二区三区蜜桃AⅤ| 制服丝袜无码每日更新| 人与鲁专区| 18黑白丝水手服自慰喷水网站| 国产美女无遮挡免费视频网站| 国产91精选在线观看| 黄色国产在线| 亚洲日韩久久综合中文字幕| 91在线一9|永久视频在线| 亚洲精品国产自在现线最新| 国产97公开成人免费视频| 国产人碰人摸人爱免费视频| 素人激情视频福利| 亚洲自拍另类| 露脸一二三区国语对白| 久久精品娱乐亚洲领先|