人臉識別等海量小文件場景,需要怎樣的存儲?

搞存儲那個西瓜哥
傳統(tǒng)的文件系統(tǒng)在文件讀寫的時候流程過于復(fù)雜,在讀取一個文件的時候,需要產(chǎn)生多次IO。例如對于Linux系統(tǒng)在讀取文件的時候,至少需要先讀取文件目錄元數(shù)據(jù)到內(nèi)存,緊接著把文件的索引節(jié)點(inode)裝載到內(nèi)存,最后再讀取實際的文件內(nèi)容,在訪問數(shù)據(jù)過程中會多次讀取元數(shù)據(jù),效率極低。

根據(jù)IDC在2018年底的預(yù)測顯示,由于大數(shù)據(jù)、AI、物聯(lián)網(wǎng)、5G等因素的驅(qū)動,全球的數(shù)據(jù)量在2025年將高達(dá)175ZB(1ZB=1024EB,1EB=1024PB)。在中國市場,由于AI技術(shù)在安防等領(lǐng)域的大規(guī)模落地與應(yīng)用,IDC預(yù)計,中國將在2025年成為擁有數(shù)據(jù)量最大的地區(qū),甚至超過整個EMEA(歐洲+中東+非洲),其中絕大部分?jǐn)?shù)據(jù)是非結(jié)構(gòu)化數(shù)據(jù)。

海量數(shù)據(jù)時代來臨,但在這上空飄著一朵烏云——那就是海量小文件的存儲問題。

海量小文件是怎么產(chǎn)生的?

海量小文件:業(yè)內(nèi)通常將大小在1MB以內(nèi)的文件稱為小文件,百萬級數(shù)量及以上稱為海量,由此量化定義海量小文件。

首先我們來看一下海量小文件是怎么產(chǎn)生的?

人工智能、物聯(lián)網(wǎng)、智慧金融、智能安防、傳感器網(wǎng)絡(luò)、科學(xué)實驗等應(yīng)用的發(fā)展產(chǎn)生了大量數(shù)據(jù),這些數(shù)據(jù)種類繁多,大小不一。不僅包括海量的大文件(大于1MB),也包括海量的小文件(小于1MB)。特別是小文件的數(shù)量將達(dá)到千萬級、億級甚至十億、百億級。

在智能安防領(lǐng)域有很多典型的海量小文件場景,人臉識別就是其中之一。人臉識別的基礎(chǔ)原理,就是通過將攝像機拍攝的圖片與視圖庫進行比較,如果匹配則命中。對于一個大型城市來說,攝像機抓拍的圖片數(shù)量會達(dá)到百億級規(guī)模。在對這些原始數(shù)據(jù)進行分析應(yīng)用的過程中就會涉及到對百億級規(guī)模的海量小文件的處理。

類似的還有智慧金融,這也是一個會產(chǎn)生海量小文件的場景。金融業(yè)務(wù)不僅有大量原始票據(jù)通過掃描形成圖片和描述信息文件,還有電子合同、簽名數(shù)據(jù)、人臉識別數(shù)據(jù)等。金融的影像數(shù)據(jù)一般單個文件大小為幾KB至幾百KB不等,文件數(shù)量達(dá)到數(shù)億至數(shù)十億級規(guī)模,并且逐年增長,需要做長期的保存。

海量小文件,存儲大煩惱

海量小文件體量龐大,但目前的文件系統(tǒng)包括本地文件系統(tǒng)、分布式文件系統(tǒng)都是匹配大文件場景的。從細(xì)節(jié)來說,如對元數(shù)據(jù)的管理、數(shù)據(jù)布局、緩存管理等的實現(xiàn)策略都側(cè)重于大文件,導(dǎo)致在海量小文件情況下,存儲處理性能極差。(比如日常的文件拷貝,如果拷貝一個大文件的電影到移動硬盤,拷貝的速度能達(dá)到100MB/S,但是如果拷貝的是超過上萬個小圖片,拷貝速度可能不到5MB/s)

因此,海量小文件存儲問題一直被認(rèn)為是工業(yè)界和學(xué)術(shù)界的難題,是海量數(shù)據(jù)時代上空飄著的那朵烏云。如前面所講的智能安防、智慧金融的存儲架構(gòu)方案設(shè)計,就需要重點考慮到存儲系統(tǒng)對于海量小文件的處理性能難題。

具體來說,導(dǎo)致海量小文件處理性能差的原因主要有如下三點:

元數(shù)據(jù)管理低效的問題

講這個問題之前,我們先認(rèn)識一下元數(shù)據(jù)。在存儲系統(tǒng)中,數(shù)據(jù)分為兩部分進行存儲:一部分是真實數(shù)據(jù);另一部分是描述這份數(shù)據(jù)的元數(shù)據(jù),比如文件系統(tǒng)中文件的文件名、文件大小、執(zhí)行權(quán)限等。元數(shù)據(jù)有著明顯特點,那就是數(shù)量多,而且容量小。

在通用的文件系統(tǒng)設(shè)計中,如果需要訪問一份真實的數(shù)據(jù)就需要先訪問到該數(shù)據(jù)的元數(shù)據(jù)??墒俏覀冎?,當(dāng)前主流的文件系統(tǒng)基本都是面向大文件設(shè)計的,在海量小文件的情況下,因為必然會產(chǎn)生更大數(shù)量級的元數(shù)據(jù),這會放大文件系統(tǒng)擴展性差、檢索效率低的問題。比如傳統(tǒng)NAS存儲采用二叉樹結(jié)構(gòu)進行數(shù)據(jù)的存放,這種方法在遇到海量小文件的時候,文件系統(tǒng)在存儲海量小文件的同時還需要存儲更大數(shù)據(jù)級的海量元數(shù)據(jù),NAS存儲在擴展性和檢索速度方面很容易就達(dá)到了瓶頸。所以,傳統(tǒng)的NAS文件系統(tǒng)在海量小文件下,性能衰減得異常厲害,一般文件數(shù)量級到達(dá)千萬級的時候效率就會變得極其低效。

因此,如果想要徹底解決海量小文件的問題,首先就需要存儲系統(tǒng)有一個健壯高效的元數(shù)據(jù)管理平臺(庫)。如果沒有核心技術(shù)解決這個問題,這個存儲系統(tǒng)即使在其他方面的優(yōu)化做得再好,也僅能滿足幾個億級別的小文件存儲,而無法滿足百億級別的小文件存儲。

I/O訪問流程復(fù)雜的問題

傳統(tǒng)的文件系統(tǒng)在文件讀寫的時候流程過于復(fù)雜,在讀取一個文件的時候,需要產(chǎn)生多次IO。例如對于Linux系統(tǒng)在讀取文件的時候,至少需要先讀取文件目錄元數(shù)據(jù)到內(nèi)存,緊接著把文件的索引節(jié)點(inode)裝載到內(nèi)存,最后再讀取實際的文件內(nèi)容,在訪問數(shù)據(jù)過程中會多次讀取元數(shù)據(jù),效率極低。

機械磁盤對于隨機小IO讀寫性能低

當(dāng)前很多文件系統(tǒng)都是將元數(shù)據(jù)分散存儲,從真實存儲的位置來看分散在存儲的所有磁盤當(dāng)中,因此元數(shù)據(jù)的讀寫屬于隨機的IO。然而機械磁盤對于隨機的IO性能極低,因此在海量小文件的場景下由于元數(shù)據(jù)讀寫會產(chǎn)生隨機高頻次的I/O讀寫,對于當(dāng)前以機械盤為主的存儲系統(tǒng)來說,性能極差。

(采用全閃存效果會比較好,但是目前來說,對于海量的非結(jié)構(gòu)化數(shù)據(jù)若使用全閃存,從成本來看并不現(xiàn)實)

解決海量小文件存儲難題

需要對癥下藥

綜合上述分析,如果想要解決好海量小文件的存儲難題,就需要對癥下藥。對于海量小文件的存儲優(yōu)化可以從元數(shù)據(jù)管理、數(shù)據(jù)組織、I/O 流程優(yōu)化與緩存管理(業(yè)界通常稱為Cache管理)等幾個方面下手。具體的技術(shù)包括通過優(yōu)化元數(shù)據(jù)管理與數(shù)據(jù)組織方式、小文件合并、優(yōu)化緩存命中率等方面,來提升海量小文件的存儲性能支撐,從而達(dá)到提升海量小文件訪問效率的目的。

元數(shù)據(jù)的承載。正如上文所說,海量小文件處理的瓶頸在于對元數(shù)據(jù)的處理,業(yè)內(nèi)通常采用分布式數(shù)據(jù)庫實現(xiàn)。通過對元數(shù)據(jù)進行獨立組織與承載,并通過元數(shù)據(jù)語義優(yōu)化、寫入優(yōu)化等,降低元數(shù)據(jù)在IO路徑和資源等方面不必要的性能消耗與寫入次數(shù)。匹配上優(yōu)化的技術(shù),減少IO數(shù)量,比如在處理業(yè)務(wù)高并發(fā)的時候,將并發(fā)的多個操作合并成一個操作,進一步提升吞吐。最后,為了進一步保障元數(shù)據(jù)的小IO高性能,通常將元數(shù)據(jù)存儲在SSD的數(shù)據(jù)分層空間中,進一步加速元數(shù)據(jù)的訪問效率。

分布式智能緩存技術(shù)。針對海量小文件設(shè)計的分布式智能緩存層,能夠讓小文件在寫入SSD后即返回,縮短IO路徑,有效降低時延,提高性能。同時還可以有效降低原生糾刪碼的I/O寫入放大的問題,提高原生糾刪碼的性能,進一步提升分布式存儲對海量小文件的性能支持。

小文件合并。通過將小文件落在智能緩存的同時還能夠?qū)⑿∥募诰€合并成大IO,然后通過條帶化技術(shù)(將大數(shù)據(jù)切分成小數(shù)據(jù)并發(fā)存儲到不同硬盤)寫入HDD,極大地提升了IO的性能。并且小文件合并還能夠減少文件數(shù)量,從而減少對應(yīng)的元數(shù)據(jù)數(shù)量,來提升性能。

行業(yè)難題與機遇往往相伴而行,各大廠商在攻克海量小文件存儲難題上各顯神通,既有老牌廠商,也有近年來異軍突起的新銳玩家。在這其中,深信服存儲宛若一個老道的新手,在海量小文件的處理上攜清晰的解題思路強勢入局。根據(jù)深信服公開的技術(shù)資料來看,其EDS對企業(yè)級分布式存儲處理海量小文件的性能優(yōu)化思路與前面講的幾點不謀而合,其核心技術(shù)點可以歸納為三點:

第一,深信服推出了一個全新的分布式數(shù)據(jù)庫PhxKV來對獨立承載元數(shù)據(jù)。PhxKV具備優(yōu)秀的性能擴展能力,能夠輕松承載數(shù)百億規(guī)模的元數(shù)據(jù),成為深信服支撐百億海量小文件高性能的堅實基礎(chǔ)。深信服內(nèi)部進行的性能測試顯示,PhxKV使用兩核時的吞吐,就能和MongoDB使用17核時的吞吐相當(dāng)。

第二,通過智能緩存技術(shù),采用高性能的SSD來加速海量小文件的讀寫效率并縮短I/O路徑。

第三,通過小文件合并技術(shù)來降低文件的數(shù)量,從而減少整體I/O讀寫頻次來提高I/O性能。

尤其是針對海量小文件的頑疾,深信服企業(yè)級分布式存儲EDS在性能提升方面表現(xiàn)搶眼,并且在權(quán)威機構(gòu)測試和用戶的實際應(yīng)用中得到檢驗。

日前,深信服企業(yè)級分布式存儲EDS通過中國泰爾實驗室權(quán)威機構(gòu)多項指標(biāo)測試驗證,其中對海量小文件承載的性能表現(xiàn)很搶眼。根據(jù)測試數(shù)據(jù),深信服EDS通過三節(jié)點構(gòu)建的對象存儲能夠輕松承載100億小文件,且性能抖動不超過5%;對象上傳速度達(dá)到15,000個/s,對象下載速度達(dá)到40,000個/s。

(深信服EDS中國泰爾實驗室測試內(nèi)容及結(jié)果)

筆者還了解到,深信服EDS在處理海量小文件時呈現(xiàn)出的高性能,是通過軟件機制和優(yōu)化來最大程度發(fā)揮硬件長處、激發(fā)硬件潛能,最終實現(xiàn)用更低成本的硬件平臺,也能夠獲得高性能,帶來的是更具性價比的解題思路。

海量小文件案例實踐

據(jù)深信服透露,南方某市公安反恐工程項目采用了深信服分布式存儲進行智能安防的數(shù)據(jù)存儲,其中涉及到3.5PB的視頻存儲以及數(shù)十億級別的人臉識別的海量小文件存儲,是一個典型的大文件與海量小文件混合存儲的場景。

深信服企業(yè)級分布式存儲EDS采用對象存儲與平臺進行對接,系統(tǒng)峰值每秒有將近3,000張圖片寫入存儲系統(tǒng)。目前存儲系統(tǒng)內(nèi)保存的海量小文件數(shù)量已經(jīng)超過50億,而且還在不斷增長當(dāng)中。得益于深信服在海量小文件的性能優(yōu)化,使得EDS平臺能夠從容應(yīng)對大并發(fā)的人臉識別系統(tǒng),并且滿足后續(xù)針對原始圖片數(shù)據(jù)的二次挖掘應(yīng)用。

對于非結(jié)構(gòu)化數(shù)據(jù)存儲來說,攻克了海量小文件存儲難題,基本代表了該存儲能夠適配絕大多數(shù)非結(jié)構(gòu)化數(shù)據(jù)存儲的場景。深信服分布式存儲基于軟件定義技術(shù)、采用通用的X86服務(wù)器與以太網(wǎng)交換機,激發(fā)硬件潛能,在海量數(shù)據(jù)時代幫助用戶構(gòu)建一個可靠、高性能、智能管理的海量數(shù)據(jù)存儲平臺。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論