• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      SQL-DFS:一種基于HDFS的海量小文件存儲(chǔ)系統(tǒng)

      2016-10-10 08:20:42馬志強(qiáng)楊雙濤張澤廣
      關(guān)鍵詞:內(nèi)存客戶端集群

      馬志強(qiáng),楊雙濤,閆 瑞,張澤廣

      (內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院,呼和浩特 010080)

      SQL-DFS:一種基于HDFS的海量小文件存儲(chǔ)系統(tǒng)

      馬志強(qiáng),楊雙濤,閆 瑞,張澤廣

      (內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院,呼和浩特 010080)

      針對(duì)Hadoop分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)進(jìn)行小文件存儲(chǔ)時(shí)NameNode內(nèi)存占用率高的問題,通過分析HDFS基礎(chǔ)架構(gòu),提出了基于元數(shù)據(jù)存儲(chǔ)集群的SQL-DFS文件系統(tǒng).通過在NameNode中加入小文件處理模塊實(shí)現(xiàn)了小文件元數(shù)據(jù)由NameNode內(nèi)存到元數(shù)據(jù)存儲(chǔ)集群的遷移,借助關(guān)系數(shù)據(jù)庫集群實(shí)現(xiàn)了小文件元數(shù)據(jù)的快速讀寫,并對(duì)小文件讀取過程進(jìn)行優(yōu)化,減少了文件客戶端對(duì)NameNode的請(qǐng)求次數(shù);通過將部分DataNode文件塊的校驗(yàn)工作交由元數(shù)據(jù)存儲(chǔ)集群完成,進(jìn)一步降低了NameNode節(jié)點(diǎn)的負(fù)載壓力.最終通過搭建HDFS和SQL-DFS實(shí)驗(yàn)平臺(tái),對(duì)HDFS和SQL-DFS 2種架構(gòu)進(jìn)行了小文件讀寫的對(duì)比測(cè)試,實(shí)驗(yàn)結(jié)果表明:SQLDFS在文件平均耗時(shí)(file average cost,F(xiàn)AC)和內(nèi)存占用率方面均明顯優(yōu)于原HDFS架構(gòu),具有更好的小文件存儲(chǔ)能力,可用于海量小文件的存儲(chǔ).

      Hadoop分布式文件系統(tǒng)(HDFS);元數(shù)據(jù)存儲(chǔ)集群;小文件;元數(shù)據(jù);內(nèi)存占用率

      Hadoop[1]在云計(jì)算領(lǐng)域內(nèi)的廣泛使用,使得其已經(jīng)成為海量數(shù)據(jù)并行處理的標(biāo)準(zhǔn).Hadoop分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)作為Hadoop的關(guān)鍵技術(shù)之一,其原型來自于谷歌公司(Google)的GFS文件系統(tǒng),可用于構(gòu)建大規(guī)模、可擴(kuò)展、高容錯(cuò)的分布式存儲(chǔ)平臺(tái).HDFS開源的特性允許用戶根據(jù)自身的業(yè)務(wù)需求對(duì)HDFS進(jìn)行開發(fā)和擴(kuò)展,使得其在雅虎(Yahoo)、百度、阿里巴巴、FaceBook及Twitter等公司內(nèi)得到廣泛應(yīng)用.

      HDFS在設(shè)計(jì)之初目的就是為了解決大文件的存儲(chǔ)與處理,取得的結(jié)果也令人滿意.然而在實(shí)際的應(yīng)用系統(tǒng)中存在著大量的小文件,直接采用HDFS進(jìn)行存儲(chǔ)存在以下問題:加載小文件的元數(shù)據(jù)信息需要占用NameNode節(jié)點(diǎn)的大量?jī)?nèi)存;用戶在讀取大量小文件時(shí)需要頻繁地訪問NameNode,嚴(yán)重影響NameNode節(jié)點(diǎn)的IO性能.

      為解決上述問題,本文提出了一種基于關(guān)系數(shù)據(jù)庫集群的海量小文件存儲(chǔ)方案,通過將集群內(nèi)小文件的元數(shù)據(jù)文件轉(zhuǎn)化成數(shù)據(jù)庫記錄存儲(chǔ)到數(shù)據(jù)庫集群中,可以很大程度減少NameNode節(jié)點(diǎn)上元數(shù)據(jù)文件大小,降低節(jié)點(diǎn)的內(nèi)存使用率,并且通過采用數(shù)據(jù)庫主從復(fù)制、讀寫分離技術(shù),實(shí)現(xiàn)元數(shù)據(jù)存儲(chǔ)集群請(qǐng)求的負(fù)載均衡,縮短小文件元數(shù)據(jù)記錄的查詢時(shí)間,進(jìn)一步提高小文件的讀寫效率.

      1 相關(guān)工作

      1.1HDFS文件系統(tǒng)

      HDFS分布式文件系統(tǒng)采用Master/Slave架構(gòu),集群內(nèi)通常由一個(gè)名稱節(jié)點(diǎn)(NameNode)和多個(gè)數(shù)據(jù)節(jié)點(diǎn)(DataNode)組成,主要包括 3個(gè)部分:NameNode、DataNode和客戶端,具體如圖1所示.其中NameNode是整個(gè)分布式文件系統(tǒng)的管理者,主要負(fù)責(zé)管理文件系統(tǒng)的命名空間、集群配置信息、文件元數(shù)據(jù)信息和文件塊的復(fù)制工作.DataNode負(fù)責(zé)存儲(chǔ)文件塊以及文件塊的元數(shù)據(jù)信息,并定期向NameNode發(fā)送心跳和塊報(bào)告.客戶端則封裝了文件的基本操作,是用戶訪問集群文件的接口[2-3].

      HDFS這種主從式的設(shè)計(jì)很大程度上簡(jiǎn)化了分布式文件系統(tǒng)的結(jié)構(gòu),用戶在讀寫文件時(shí)無需經(jīng)過NameNode,直接與DataNode通信即可,并且集群內(nèi)采用流式文件讀寫,在大文件的存儲(chǔ)及處理上表現(xiàn)出優(yōu)越的性能.然而也是這種架構(gòu)設(shè)計(jì)導(dǎo)致了HDFS對(duì)海量小文件存儲(chǔ)支持不足.首先HDFS集群在運(yùn)行期間,所有文件的元數(shù)據(jù)都保存在NameNode的內(nèi)存中,即使元數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)十分緊湊,但海量小文件的元數(shù)據(jù)信息仍占用大量的NameNode內(nèi)存,導(dǎo)致了NameNode節(jié)點(diǎn)內(nèi)存占用率高的問題.其次客戶端在讀取大量小文件時(shí)需要頻繁地訪問NameNode節(jié)點(diǎn),以獲取文件的元數(shù)據(jù)信息,嚴(yán)重影響 NameNode節(jié)點(diǎn)的 IO性能.而且DateNode節(jié)點(diǎn)文件塊報(bào)告的檢測(cè)同樣需要占用NameNode節(jié)點(diǎn)資源.因此,HDFS集群內(nèi)海量小文件的存在給HDFS的可擴(kuò)展性和性能帶來一定負(fù)面影響.

      1.2小文件解決方案

      目前針對(duì)HDFS小文件存儲(chǔ)效率低的問題,研究的總體思路是將小文件合并為大文件,減少文件的個(gè)數(shù),從而降低NameNode節(jié)點(diǎn)的內(nèi)存占用率,同時(shí)利用索引和緩存技術(shù)提高文件的讀取速率.主要研究方法分為基于HAR、SequenceFile與MapFile技術(shù)的小文件合并和基于數(shù)據(jù)庫技術(shù)的小文件合并2類.

      1)基于HAR、SequenceFile和MapFile的小文件合并方法

      Mackey等[4]最早采用Hadoop Archive技術(shù)實(shí)現(xiàn)將小文件合并為大文件,有效地降低了HDFS中小文件的數(shù)量,然而Hadoop Archive不支持文件刪除、修改和追加,當(dāng)發(fā)生文件更改時(shí)需要重新創(chuàng)建歸檔文件,然而創(chuàng)建歸檔文件的過程需要占用大量的機(jī)器資源,頻繁地創(chuàng)建歸檔文件將嚴(yán)重影響集群系統(tǒng)的性能.趙曉永等[5]將SequenceFile技術(shù)應(yīng)用到了海量MP3音頻文件的存儲(chǔ),很好地解決了小文件過多時(shí)NameNode的內(nèi)存瓶頸問題,提高了MP3文件的訪問效率;劉高軍等[6]利用 Redis緩存和SequenceFile技術(shù)實(shí)現(xiàn)了HDFS中小文件的快速合并存儲(chǔ),并通過緩存保證了小文件的讀寫效率;余思等[7]采用SequenceFile技術(shù)將小文件以隊(duì)列的形式合并為大文件,從而實(shí)現(xiàn)了節(jié)省NameNode節(jié)點(diǎn)所占內(nèi)存空間的目的,同時(shí)也實(shí)現(xiàn)了對(duì)合并之后的小文件的透明操作.洪旭升等[8]通過將序列化后的小文件存儲(chǔ)至MapFile容器,對(duì)小文件進(jìn)行合并,并通過建立索引,有效降低了文件總數(shù)量和提高了文件的訪問效率.

      上述方案主要思路是通過將小文件合并成大文件同時(shí)對(duì)小文件索引,然后再將合并的大文件存儲(chǔ)到HDFS中,通過這種合并的方式能夠很大程度地減少NameNode節(jié)點(diǎn)上元數(shù)據(jù)文件的大小,有效降低NameNode的內(nèi)存使用率,但難以滿足低延遲要求,即使借助索引、緩存技術(shù)文件隨機(jī)讀寫性能仍無法讓人滿意.

      2)基于數(shù)據(jù)庫的小文件合并

      張海等[9]提出了一種基于關(guān)系數(shù)據(jù)庫的小文件合并策略,通過append操作將小文件內(nèi)容按用戶追加到用戶文件中,利用關(guān)系數(shù)據(jù)庫記錄小文件在用戶文件中的位置,再通過seek操作實(shí)現(xiàn)小文件的讀取.但目前HDFS對(duì)append和seek操作支持不足.劉小俊等[10]將小文件首先集中存儲(chǔ)到關(guān)系庫,當(dāng)數(shù)據(jù)庫文件達(dá)到一定大小再將數(shù)據(jù)庫文件轉(zhuǎn)存至HDFS,而當(dāng)用戶讀取文件時(shí),根據(jù)用戶的請(qǐng)求信息RDBMS將動(dòng)態(tài)地加載數(shù)據(jù)庫文件,然后根據(jù)文件的位置信息再讀取文件.上述2種解決方案都是借用傳統(tǒng)的關(guān)系數(shù)據(jù)庫去解決小文件的存儲(chǔ)問題,其本質(zhì)上還是文件合并的過程.朱曉麗等[11]利用新興的列式數(shù)據(jù)庫HBase進(jìn)行海量圖片的存儲(chǔ),實(shí)現(xiàn)了系統(tǒng)層對(duì)圖片的合并、全局命名,并通過對(duì)HFile的Key-Value字節(jié)數(shù)組結(jié)構(gòu)的完善,實(shí)現(xiàn)了圖片讀取時(shí)的自動(dòng)糾錯(cuò),提高了系統(tǒng)可靠性,然而基于HBase存儲(chǔ)支持的文件大小范圍極其有限.

      基于上述研究基礎(chǔ),本文跳出小文件合并的思路,提出一種基于關(guān)系數(shù)據(jù)庫集群[12-13]的海量小文件存儲(chǔ)方案.通過在HDFS中加入小文件處理模塊,對(duì)集群內(nèi)的大小文件區(qū)分處理,小文件寫入時(shí)產(chǎn)生的元數(shù)據(jù)信息轉(zhuǎn)化成記錄存儲(chǔ)到元數(shù)據(jù)存儲(chǔ)集群,避免了NameNode節(jié)點(diǎn)需要加載維持大量的小文件元數(shù)據(jù)文件,同時(shí)利用主從復(fù)制、讀寫分離技術(shù)構(gòu)建高效的元數(shù)據(jù)存儲(chǔ)集群進(jìn)一步提高了元數(shù)據(jù)記錄的查詢速率,使得小文件的讀寫速率得到了提升.

      2 SQL-DFS文件系統(tǒng)

      SQL-DFS文件系統(tǒng)模型的核心思想:通過將小文件的元數(shù)據(jù)信息由NameNode內(nèi)存遷移到元數(shù)據(jù)存儲(chǔ)集群,從而降低NameNode節(jié)點(diǎn)的內(nèi)存消耗;通過優(yōu)化小文件讀取過程,減少文件客戶端對(duì)NameNode節(jié)點(diǎn)的訪問次數(shù);通過將DataNode塊報(bào)告校驗(yàn)工作轉(zhuǎn)移到元數(shù)據(jù)存儲(chǔ)集群,降低NameNode節(jié)點(diǎn)的負(fù)載壓力;通過建立元數(shù)據(jù)存儲(chǔ)集群實(shí)現(xiàn)對(duì)小文件元數(shù)據(jù)記錄的快速查詢,提高小文件的讀寫效率.

      2.1SQL-DFS系統(tǒng)模型

      SQL-DFS的整體架構(gòu)設(shè)計(jì)如圖2所示,與HDFS架構(gòu)相比在NameNode節(jié)點(diǎn)上新增加了小文件處理模塊,整個(gè)集群附加了一個(gè)關(guān)系數(shù)據(jù)庫集群. SQL-DFS包括如下4個(gè)部分:客戶端、NameNode、元數(shù)據(jù)存儲(chǔ)集群和DataNode.

      客戶端與NameNode、DataNode以及元數(shù)據(jù)存儲(chǔ)集群進(jìn)行通信來訪問SQL-DFS文件系統(tǒng).客戶端與NameNode通信可訪問集群內(nèi)的元數(shù)據(jù)信息,SQL-DFS中對(duì)文件的讀取和查找操作進(jìn)行了如下優(yōu)化:當(dāng)用戶進(jìn)行文件讀取和查找時(shí),如果通過文件類型判定客戶端請(qǐng)求的文件為小文件,本次元數(shù)據(jù)請(qǐng)求將不再經(jīng)過NameNode,直接查詢?cè)獢?shù)據(jù)存儲(chǔ)集群,從而減少了客戶端對(duì)NameNode的請(qǐng)求次數(shù),減輕了NameNode的負(fù)載壓力.在得到文件元數(shù)據(jù)信息的前提下,客戶端與DataNode通信完成文件的讀寫.

      NameNode仍是整個(gè)文件系統(tǒng)的決策者和全部元數(shù)據(jù)的持有者,只是將元數(shù)據(jù)由內(nèi)存轉(zhuǎn)存到了元數(shù)據(jù)存儲(chǔ)集群,元數(shù)據(jù)轉(zhuǎn)存的工作是由新增的小文件處理模塊完成的.小文件處理模塊的處理過程如下:

      1)根據(jù)配置文件中的文件塊大小設(shè)置,對(duì)用戶寫入的文件進(jìn)行大小性質(zhì)的判斷,即是否屬于小文件;

      2)小文件寫入時(shí),接收NameNode返回的元數(shù)據(jù)信息并返回到客戶端,待文件上傳完成后將元數(shù)據(jù)信息同步到元數(shù)據(jù)存儲(chǔ)集群;

      3)文件讀取時(shí),如果讀取的文件是小文件,則向元數(shù)據(jù)存儲(chǔ)集群中的元數(shù)據(jù)管理模塊請(qǐng)求元數(shù)據(jù)信息,并返回到客戶端;

      4)接收來自DataNode的心跳和塊報(bào)告,將其中小文件相關(guān)的部分轉(zhuǎn)發(fā)的元數(shù)據(jù)存儲(chǔ)集群的元數(shù)據(jù)管理模塊進(jìn)行下一步處理.

      關(guān)系數(shù)據(jù)庫集群主要負(fù)責(zé)存儲(chǔ)小文件的元數(shù)據(jù)記錄,通過配置文件可以指定不同類型的關(guān)系型數(shù)據(jù)庫.元數(shù)據(jù)存儲(chǔ)集群通過元數(shù)據(jù)管理模塊向上層提供元數(shù)據(jù)訪問服務(wù),具體處理過程為:

      1)接收來自客戶端的元數(shù)據(jù)查詢請(qǐng)求;

      2)接收NameNode的元數(shù)據(jù)記錄同步請(qǐng)求;

      3)接收來自NameNode的部分塊報(bào)告,與數(shù)據(jù)庫集群中的記錄匹配對(duì)比,并將結(jié)果返回到NameNode.

      2.2元數(shù)據(jù)存儲(chǔ)集群

      元數(shù)據(jù)存儲(chǔ)集群的架構(gòu)設(shè)計(jì)如圖3所示,主要存儲(chǔ)小文件信息、小文件與Block的對(duì)應(yīng)關(guān)系和Block與DataNode節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系.集群通過元數(shù)據(jù)管理模塊將數(shù)據(jù)庫接口提供給客戶端和NameNode,接收二者的訪問請(qǐng)求.在接收到訪問請(qǐng)求后,根據(jù)數(shù)據(jù)庫語句的關(guān)鍵字判斷該訪問請(qǐng)求是讀操作還是寫操作.如果是讀操作,則將該請(qǐng)求分發(fā)到相對(duì)空閑的從數(shù)據(jù)庫處理;如果是寫操作,則該請(qǐng)求只能由主數(shù)據(jù)庫處理,而且必須以事務(wù)方式進(jìn)行,主數(shù)據(jù)庫在完成請(qǐng)求后對(duì)從數(shù)據(jù)庫進(jìn)行同步[14-15].

      2.3SQL-DFS文件操作

      在改進(jìn)后的HDFS架構(gòu)中,提供了對(duì)文件全面的操作支持,如文件上傳、下載、查找、刪除等常規(guī)操作.以文件上傳和文件下載過程為例,分步驟對(duì)改進(jìn)后的HDFS工作流程進(jìn)行詳細(xì)說明.

      2.3.1寫文件操作

      客戶端在寫入文件時(shí),NameNode首先根據(jù)文件大小對(duì)寫入的文件進(jìn)行判斷,如果寫入的文件屬于小文件,則執(zhí)行圖4中的A、B、C、D、E和F步驟.否則,將執(zhí)行A、G、H、D和I步驟.各個(gè)步驟如下:

      步驟A 文件寫入請(qǐng)求由文件判別模塊進(jìn)行判別處理,如果文件大小小于配置文件中設(shè)定的文件閾值,則判定該文件為小文件,否則判定為普通文件.

      步驟B 將小文件轉(zhuǎn)交由小文件存儲(chǔ)模塊進(jìn)行存儲(chǔ),NameNode節(jié)點(diǎn)將為該文件分配空間.

      步驟C 小文件存儲(chǔ)模塊元數(shù)據(jù)信息返回到客戶端,完成文件寫入的準(zhǔn)備工作.

      步驟D 客戶端根據(jù)元數(shù)據(jù)信息將文件寫入到指定的DataNode.

      步驟E 客戶端返回文件寫入確認(rèn)信息.

      步驟F 小文件存儲(chǔ)模塊將小文件信息、元數(shù)據(jù)信息數(shù)據(jù)寫入到數(shù)據(jù)庫集群.

      步驟G 普通文件由通用文件存儲(chǔ)模塊進(jìn)行存儲(chǔ),NameNode節(jié)點(diǎn)將為該文件分配空間,并將產(chǎn)生的元數(shù)據(jù)信息寫入到元數(shù)據(jù)文件.

      步驟H 通用文件存儲(chǔ)模塊將元數(shù)據(jù)信息返回到客戶端,完成文件寫入的準(zhǔn)備工作.

      步驟I 客戶端返回文件寫入確認(rèn)信息.

      2.3.2讀文件操作

      文件讀取時(shí),NameNode首先根據(jù)請(qǐng)求信息對(duì)該請(qǐng)求進(jìn)行判斷,如果請(qǐng)求的文件屬于小文件,則執(zhí)行圖5中A、B、C、D和E步驟,否則將執(zhí)行A、F、G和E步驟.各個(gè)步驟解釋如下:

      步驟A 文件讀取請(qǐng)求信息交由文件判別模塊進(jìn)行判別處理,如果文件大小小于配置文件中設(shè)定的文件閾值,則判定該文件為小文件,否則判定為普通文件.

      步驟B 小文件存儲(chǔ)模塊接收文件請(qǐng)求信息,解析得到小文件的相關(guān)信息.

      步驟C 從數(shù)據(jù)庫集群查詢得到小文件的元數(shù)據(jù)信息.

      步驟D 將小文件元數(shù)據(jù)信息返回到客戶端.

      步驟E 客戶端根據(jù)名稱節(jié)點(diǎn)返回的元數(shù)據(jù)記錄到指定的數(shù)據(jù)節(jié)點(diǎn)上讀取文件.

      步驟F 將文件請(qǐng)求信息轉(zhuǎn)發(fā)到常規(guī)文件處理模塊進(jìn)行處理.

      步驟G 從名稱節(jié)點(diǎn)內(nèi)存中查詢得到元數(shù)據(jù)記錄,并返回到客戶端.

      3 實(shí)驗(yàn)設(shè)計(jì)與結(jié)果分析

      3.1實(shí)驗(yàn)環(huán)境與評(píng)價(jià)指標(biāo)

      為了驗(yàn)證SQL-DFS文件系統(tǒng)模型的性能,本文分別搭建了原HDFS文件系統(tǒng)和SQL-DFS文件系統(tǒng),并將2種文件系統(tǒng)中的文件塊大小均設(shè)置為64 MB,副本數(shù)為3,硬件配置情況如表1所示.實(shí)驗(yàn)所需的測(cè)試文件由程序生成得到,總數(shù)為500 000個(gè),文件的大小在1 KB~5 MB之間,文件總大小為150.68 GB,文件平均大小為316 KB.

      表1 實(shí)驗(yàn)環(huán)境配置Table 1 Experimental environment configuration

      在上述環(huán)境中本文共進(jìn)行了3組實(shí)驗(yàn),分別是:文件寫入實(shí)驗(yàn)、文件讀取實(shí)驗(yàn)以及空閑時(shí)內(nèi)存占用對(duì)比實(shí)驗(yàn),并在每組實(shí)驗(yàn)內(nèi)分別進(jìn)行5次不同文件數(shù)量下的實(shí)驗(yàn),文件數(shù)量依次為:100 000、200 000、300 000、400 000和500 000,文件均從測(cè)試文件中隨機(jī)抽取得到.

      本文將文件平均耗時(shí)(file average cost,F(xiàn)AC)和空閑時(shí)NameNode內(nèi)存占用率指標(biāo)作為實(shí)驗(yàn)的評(píng)價(jià)標(biāo)準(zhǔn),其中文件平均耗時(shí)具體定義為

      式中:sum為測(cè)試文件的總個(gè)數(shù);ti為完成第i個(gè)文件處理所用時(shí)間.FAC代表集群對(duì)小文件處理操作的平均用時(shí),F(xiàn)AC值越小說明集群對(duì)小文件的處理能力越好.而空閑時(shí)NameNode內(nèi)存占用率通過free命令即可得到,由于NameNode機(jī)器僅安裝運(yùn)行HDFS和SQL-DFS,所以本指標(biāo)可直接說明2種平臺(tái)下的內(nèi)存占用情況.

      3.2文件寫入實(shí)驗(yàn)

      在文件寫入實(shí)驗(yàn)中分別將不同數(shù)量的文件寫入到HDFS和SQL-DFS文件系統(tǒng)中上傳,并測(cè)得完成寫入所需的總時(shí)間,表2中給出了實(shí)驗(yàn)測(cè)得的具體數(shù)據(jù).

      將表2中的實(shí)驗(yàn)結(jié)果,按照式(1)處理可得到不同數(shù)量的文件寫入時(shí)的FAC值,將文件數(shù)量作為橫軸,F(xiàn)AC作為縱軸,便可得到不同平臺(tái)上傳文件時(shí)隨著文件數(shù)量的增加FAC的變化情況,如圖6所示.

      表2表明隨著寫入文件數(shù)量的增多,HDFS上傳同樣數(shù)量的小文件所需時(shí)間明顯要多于SQLDFS,HDFS耗時(shí)增長(zhǎng)更顯著.通過圖6同樣可以發(fā)現(xiàn)在SQL-DFS中隨著上傳文件數(shù)量的增加,F(xiàn)AC值變化極為平緩,增速遠(yuǎn)低于HDFS,說明在SQL-DFS中新寫入的文件對(duì)集群性能不會(huì)產(chǎn)生明顯的負(fù)面影響,而在HDFS中,新寫入的小文件對(duì)集群性能產(chǎn)生了明顯的負(fù)面影響,如當(dāng)文件達(dá)到50萬時(shí),SQLDFS的FAC為0.140 23 s,而 HDFS的FAC已達(dá)0.218 07 s,高出SQL-DFS 0.077 8 s.

      SQL-DFS架構(gòu)設(shè)計(jì)在文件數(shù)量少的情況下,文件寫入性能并沒有提高,相比原HDFS架構(gòu)反而耗時(shí)更多,這是由于改進(jìn)后的架構(gòu)中加入了小文件判別模塊,需要對(duì)用戶上傳的文件進(jìn)行統(tǒng)一判別,但隨著上傳文件數(shù)量的增多,SQL-DFS架構(gòu)表現(xiàn)出更好的性能,這是因?yàn)樵?HDFS的架構(gòu)設(shè)計(jì)需要在NameNode節(jié)點(diǎn)的內(nèi)存中加載并維持文件的元數(shù)據(jù)信息,隨著文件的增多元數(shù)據(jù)占據(jù)消耗更多的內(nèi)存空間,使得系統(tǒng)整體性能下降.而在SQL-DFS中,NameNode節(jié)點(diǎn)的內(nèi)存占用幾乎沒有變化,所有的元數(shù)據(jù)信息都轉(zhuǎn)化成表記錄存儲(chǔ)到了數(shù)據(jù)庫集群內(nèi).當(dāng)上傳的小文件約240 000個(gè)時(shí),SQL-DFS架構(gòu)在文件寫入時(shí)的表現(xiàn)已經(jīng)優(yōu)于原HDFS架構(gòu),此時(shí)原HDFS架構(gòu)中元數(shù)據(jù)文件大小為206.7 MB,而SQLDFS架構(gòu)中元數(shù)據(jù)文件大小為32.5 MB.

      3.3文件讀取實(shí)驗(yàn)

      在文件讀取實(shí)驗(yàn)中,分別從HDFS、HDFS-HAR以及SQL-DFS文件系統(tǒng)中讀取不同數(shù)量的文件,并測(cè)得讀取全部文件所需的總時(shí)間,表3給出了實(shí)驗(yàn)測(cè)得的具體數(shù)據(jù).其中HAR列指的是對(duì)HDFS中的文件執(zhí)行歸檔命令以后再進(jìn)行文件讀取的耗時(shí).

      表3 不同平臺(tái)下文件的讀取耗時(shí)Table 3 Reading time of the file on different platforms

      將表3中的實(shí)驗(yàn)結(jié)果,按照式(1)處理可得到不同數(shù)量文件讀取時(shí)的FAC值,將文件數(shù)量作為橫軸,F(xiàn)AC作為縱軸,便可得到不同平臺(tái)讀取文件時(shí)隨著文件數(shù)量的增加FAC值的變化情況,如圖7所示.

      通過圖7可以發(fā)現(xiàn),SQL-DFS在文件讀取方面性能有了顯著的提高,用時(shí)明顯低于同等文件數(shù)量下的HDFS以及歸檔操作后的HDFS.歸檔操作后的HDFS雖然節(jié)省了NameNode節(jié)點(diǎn)內(nèi)存,但由于需要讀取2層索引文件導(dǎo)致其在文件讀取性能上表現(xiàn)是最差的.在圖7中,SQL-DFS的FAC變化最為平緩,測(cè)試文件數(shù)量由100 000增加到500 000,F(xiàn)AC值僅增加0.005 1 s,F(xiàn)AC均值約為0.023 1 s,相比HDFS均值(0.048 6 s)降低了0.025 5 s,比HDFSHAR均值(0.065 9 s)低了0.042 8 s.

      3.4空閑時(shí)內(nèi)存占用對(duì)比實(shí)驗(yàn)

      每次實(shí)驗(yàn)后,通過執(zhí)行free命令查看到系統(tǒng)的內(nèi)存占用率情況,具體如圖8所示.

      通過圖8可以發(fā)現(xiàn),SQL-DFS在NameNode內(nèi)存消耗上表現(xiàn)也是最好的,當(dāng)文件數(shù)目達(dá)到了500 000時(shí),原HDFS中NameNode節(jié)點(diǎn)內(nèi)存使用率達(dá)33.4%,而SQL-DFS中NameNode節(jié)點(diǎn)內(nèi)存使用率僅有12.5%.

      3.5普通文件與大文件讀寫對(duì)比實(shí)驗(yàn)

      為了驗(yàn)證SQL-DFS在存儲(chǔ)普通文件與大文件時(shí)的性能,在實(shí)驗(yàn)平臺(tái)上進(jìn)行了SQL-DFS與HDFS文件系統(tǒng)的對(duì)比實(shí)驗(yàn),分別為文件寫入實(shí)驗(yàn)和文件讀取實(shí)驗(yàn).其中實(shí)驗(yàn)數(shù)據(jù)為50個(gè)視頻文件,文件總大小為62.65 GB,文件平均大小為1.253 GB,過程同小文件對(duì)比實(shí)驗(yàn)過程一致.

      由表4可知,當(dāng)普通文件與大文件寫入時(shí),SQLDFS上傳同等數(shù)量的文件所需時(shí)間比原HDFS文件系統(tǒng)耗時(shí)要多,二者的差值僅占總上傳時(shí)間的2%左右,這是由于SQL-DFS文件系統(tǒng)上傳普通文件時(shí),所有上傳文件需要統(tǒng)一經(jīng)由文件判別模塊進(jìn)行文件大小的判定,從而導(dǎo)致了耗時(shí)差值.

      表4 不同平臺(tái)下普通文件的寫入耗時(shí)Table 4 Writing time of the ordinary file on different platforms

      將表4中的實(shí)驗(yàn)結(jié)果,按照式(1)處理可得到不同數(shù)量的文件讀取時(shí)的FAC值,將文件數(shù)量作為橫軸,F(xiàn)AC作為縱軸,便可得到不同平臺(tái)寫入普通文件時(shí)隨著文件數(shù)量的增加FAC的變化情況,如圖9所示.

      由圖9可知,文件數(shù)量的增多及文件系統(tǒng)中文件塊的增多,導(dǎo)致SQL-DFS和HDFS寫入普通文件的平均耗時(shí)均有所增加,增加速度都極為平緩,并且二者的差值極小,說明SQL-DFS文件系統(tǒng)中的文件判別模塊對(duì)普通文件以及大文件的寫入帶來了極小的負(fù)面影響,可忽略不計(jì).在普通文件以及大文件讀取時(shí),文件判別模塊帶來了同樣的負(fù)面影響,在讀取實(shí)驗(yàn)的結(jié)果中也得到了驗(yàn)證,本文不另作陳述.

      4 結(jié)論

      1)通過在HDFS的NameNode中加入小文件處理模塊,將HDFS中部分DataNode文件塊的校驗(yàn)工作交由元數(shù)據(jù)存儲(chǔ)集群完成,給出了一種基于元數(shù)據(jù)存儲(chǔ)集群的SQL-DFS文件系統(tǒng),實(shí)現(xiàn)了海量小文件的快速讀寫.

      2)構(gòu)建了SQL-DFS文件系統(tǒng),并與HDFS系統(tǒng)進(jìn)行了多組對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明:SQL-DFS文件系統(tǒng)在小文件的讀寫性能上表現(xiàn)均優(yōu)于HDFS,可以用于海量小文件的存儲(chǔ).

      [1]Apache.Welcome to apache hadoop[EB/OL].(2010-02-27)[2015-04-12].http:∥hadoop.apache.org.

      [2]BORTHAKUR D.The hadoop distributed file system:architecture and design[J].Hadoop Project Website,2007,11(11):1-10.

      [3]SHVACHKO K,KUANG H,RADIA S,et al.The hadoop distributed file system[C]∥Mass Storage Systems and Technologies(MSST),2010 IEEE 26th Symposium on. Incline Village:IEEE,2010:1-10.

      [4]MACKEY G,SEHRISH S,WANG J.Improving metadata management for small files in HDFS[C]∥ Cluster Computing and Workshops,2009.CLUSTER’09.IEEE International Conference on.New Orleans:IEEE,2009:1-4.

      [5]趙曉永,楊揚(yáng),孫莉莉,等.基于Hadoop的海量MP3文件存儲(chǔ)架構(gòu)研究[J].計(jì)算機(jī)應(yīng)用,2012,32(6):1724-1726.ZHAO X Y,YANG Y,SUN L L,et al.Hadoop-based storage architecture for mass MP3 files[J].Journal of Computer Applications,2012,32(6):1724-1726.(in Chinese)

      [6]劉高軍,王帝澳.基于Redis的海量小文件分布式存儲(chǔ)方法研究[J].計(jì)算機(jī)工程與科學(xué),2013,35(10):58-64. LIU GJ,WANGDA.ResearchofRedisbased distributed storage method for massive small file[J]. Computer Engineering&Science,2013,35(10):58-64. (in Chinese)

      [7]余思,桂小林,黃汝維,等.一種提高云存儲(chǔ)中小文件存儲(chǔ)效率的方案[J].西安交通大學(xué)學(xué)報(bào),2011,45 (6):59-63. YU S,GUI X L,HUANG R W,et al.Improving the storage efficiency of small files in cloud storage[J]. Journal of Xi’an Jiaotong University,2011,45(6):59-63.(in Chinese)

      [8]洪旭升,林世平.基于MapFile的HDFS小文件存儲(chǔ)效率問題[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(11):179-182. HONG X S,LIN S P.Efficiency of storaging small files in HDFS based on MapFile[J].Computer Systems& Applications,2012,21(11):179-182.(in Chinese)

      [9]張海,馬建紅.基于HDFS的小文件存儲(chǔ)與讀取優(yōu)化策略[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,23(5):167-171. ZHANG H,MA J H.Optimizational strategy of small files stored and readed on HDFS[J].Computer Systems& Applications,2014,23(5):167-171.(in Chinese)

      [10] 劉小俊,徐正全,潘少明.一種結(jié)合 RDBMS和Hadoop的海量小文件存儲(chǔ)方法[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2013,38(1):113-115. LIU X J,XU Z Q,PAN S M.A massive small file storage solution combination of RDBMS and hadoop[J]. Geomatics and Information Science of Wuhan University,2013,38(1):113-115.(in Chinese)

      [11]朱曉麗,趙志剛.一種基于HBase的海量圖片存儲(chǔ)技術(shù)[J].信息系統(tǒng)工程,2013(8):22-24. ZHU X L,ZHAO Z G.A massive image storage technology based on HBase[J].Information System Engineering,2013(8):22-24.(in Chinese)

      [12]MONTANER H,SILLA F,F(xiàn)R?NING H,et al.A new degree of freedom for memory allocation in clusters[J]. Cluster Computing,2012,15(2):101-123.

      [13]谷震離.關(guān)系數(shù)據(jù)庫查詢優(yōu)化方法研究[J].微計(jì)算機(jī)信息,2006(15):162-164. GU Z L.Research on optimization method for queries in relational database[J].Control&Automation,2006 (15):162-164.(in Chinese)

      [14]AKAL F,B?HMK,SCHEKHJ.OLAPquery evaluation in a database cluster:a performance study on intra-query parallelism[C]∥Advances in Databases and Information Systems.Berlin:Springer,2002:218-231.

      [15]CATTELL R.Scalable SQL and NoSQL data stores[J]. Acm Sigmod Record,2011,39(4):12-27.

      (責(zé)任編輯 呂小紅)

      SQL-DFS:A Massive Small File Storage System Based on HDFS

      MA Zhiqiang,YANG Shuangtao,YAN Rui,ZHANG Zeguang
      (School of Information Engineering,Inner Mongolia University of Technology,Hohhot 010080,China)

      In order to solve the problem of high occupancy rate of NameNode memory while using Hadoop distributed file system(HDFS)to store massive small files,this paper analyzed the HDFS storage structure and presented a SQL-DFS file system based on metadata storage cluster.In SQL-DFS,in order to move small file metadata from NameNode memory to metadata storage cluster a small file processing module was added in NameNode.In order to improve the reading and writing speed of the metadata,relational database cluster was used,and in order to reduce the time of request for NameNode the reading process of the small file was optimized.To further reduce the load pressure of NameNode,the checking of file block from DataNode was completed by metadata storage cluster.Finally the contrast experiments were carried out between HDFS and SQL-DFS experimental platform.The experimental results show that SQL-DFS in the file average cost(FAC)and memory occupancy rate are significantly better than that of the original HDFS architecture and has better small file storage capacity.It can be used for the storage of massive small files.

      Hadoop distributed file system(HDFS);metadata storage clusters;small files;metadata;memory occupancy

      TP 391

      A

      0254-0037(2016)01-0134-08

      10.11936/bjutxb2015060040

      2015-06-12

      國(guó)家自然科學(xué)基金資助項(xiàng)目(61363052);內(nèi)蒙古自治區(qū)自然科學(xué)基金資助項(xiàng)目(2014MS0608);內(nèi)蒙古自治區(qū)高等學(xué)??茖W(xué)研究項(xiàng)目(NJZY12052)

      馬志強(qiáng)(1972—),男,副教授,主要從事機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、搜索引擎方面的研究,E-mail:mzq_bim@163.com

      猜你喜歡
      內(nèi)存客戶端集群
      海上小型無人機(jī)集群的反制裝備需求與應(yīng)對(duì)之策研究
      “春夏秋冬”的內(nèi)存
      一種無人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
      電子制作(2018年11期)2018-08-04 03:25:40
      縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
      孵化垂直頻道:新聞客戶端新策略
      基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
      Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
      勤快又呆萌的集群機(jī)器人
      基于內(nèi)存的地理信息訪問技術(shù)
      客戶端空間數(shù)據(jù)緩存策略
      分宜县| 河南省| 太原市| 元氏县| 泸溪县| 呼玛县| 石河子市| 湘潭市| 蕉岭县| 卓资县| 呼伦贝尔市| 白朗县| 古浪县| 松滋市| 湖南省| 南郑县| 应城市| 云浮市| 五峰| 陆河县| 筠连县| 昆明市| 江都市| 修文县| 辰溪县| 布尔津县| 河源市| 富民县| 东安县| 车险| 正蓝旗| 塔城市| 黑水县| 监利县| 克山县| 哈巴河县| 吴桥县| 苏州市| 黎城县| 舞阳县| 和静县|