面向并行數(shù)據(jù)采集的分布式文件系統(tǒng)寫訪問方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式存儲領(lǐng)域,尤其涉及一種面向并行數(shù)據(jù)采集的分布式文件系統(tǒng)寫訪問方法。
【背景技術(shù)】
[0002]隨著智能城市的推廣,各種并行數(shù)據(jù)采集設(shè)備已經(jīng)被廣泛地應(yīng)用到人們的生活中,例如交通網(wǎng)絡(luò)中的攝像頭等。這類設(shè)備通常安裝在城市的各個角落,使用硬件采集數(shù)據(jù),并將所采集到的數(shù)據(jù)存放在分布式文件系統(tǒng)中,讓用戶能夠很方便地從文件系統(tǒng)里讀取相關(guān)的數(shù)據(jù)。分布式文件系統(tǒng)通常包含客戶端、服務(wù)器和元數(shù)據(jù)服務(wù)器三部分,其中客戶端部署在應(yīng)用程序所在計算機中,為用戶提供數(shù)據(jù)的讀寫接口 ;數(shù)據(jù)服務(wù)器通常部署在數(shù)據(jù)中心的服務(wù)器中,用來存放文件內(nèi)容;元數(shù)據(jù)服務(wù)器也通常部署在數(shù)據(jù)中心的服務(wù)器中,它是整個分布式文件系統(tǒng)的控制中心,對整個系統(tǒng)中的文件布局等元數(shù)據(jù)信息進行統(tǒng)一的管理。
[0003]目前,由于各種數(shù)據(jù)采集設(shè)備的升級,這類設(shè)備每秒鐘采集到的數(shù)據(jù)量變得越來越大,例如高清攝像頭每秒鐘都會產(chǎn)生到大量的數(shù)據(jù)等,而傳統(tǒng)的分布式文件系統(tǒng)已難以滿足這些設(shè)備的I/O需求;針對此問題,一種解決辦法是在分布式文件系統(tǒng)中融入數(shù)據(jù)采集設(shè)備和相應(yīng)的數(shù)據(jù)采集程序,并輔以特殊的物理布局和特殊的算法與數(shù)據(jù)結(jié)構(gòu),從而產(chǎn)生一種面向并行數(shù)據(jù)采集的分布式文件系統(tǒng),在一定程度上滿足數(shù)據(jù)采集程序?qū)挼男枨?。然而,在實際處理過程中,由于分布式文件系統(tǒng)的元數(shù)據(jù)處理過程通常采用同步的模式,應(yīng)用程序在寫數(shù)據(jù)之前需要等待元數(shù)據(jù)服務(wù)器的響應(yīng),從而影響了整個寫操作的效率。在數(shù)據(jù)采集的應(yīng)用場景中,每秒鐘需要寫入的數(shù)據(jù)量非常大,而這一影響很容易導(dǎo)致數(shù)據(jù)的產(chǎn)生速度大于寫速度,從而導(dǎo)致一些數(shù)據(jù)的必然丟失。
【發(fā)明內(nèi)容】
[0004]本發(fā)明旨在至少解決上述技術(shù)問題之一。
[0005]為此,本發(fā)明的目的在于提出一種面向并行數(shù)據(jù)采集的分布式文件系統(tǒng)寫訪問方法。
[0006]為了實現(xiàn)上述目的,本發(fā)明的實施例公開了一種面向并行數(shù)據(jù)采集的分布式文件系統(tǒng)寫訪問方法,由數(shù)據(jù)采集設(shè)備、數(shù)據(jù)采集程序、客戶端、數(shù)據(jù)服務(wù)器程序、元數(shù)據(jù)服務(wù)器構(gòu)成的面向并行數(shù)據(jù)采集的分布式文件系統(tǒng),所述方法包括以下步驟:S1:對所述數(shù)據(jù)采集設(shè)備、所述數(shù)據(jù)采集程序、所述客戶端、所述數(shù)據(jù)服務(wù)器程序和所述元數(shù)據(jù)服務(wù)器進行配置,實現(xiàn)所述數(shù)據(jù)采集設(shè)備、所述數(shù)據(jù)采集程序、所述客戶端程序、所述數(shù)據(jù)服務(wù)器程序和所述元數(shù)據(jù)服務(wù)器部署于一套通過網(wǎng)絡(luò)互聯(lián)的服務(wù)器集群之上;S2:對所述數(shù)據(jù)采集設(shè)備、所述數(shù)據(jù)采集程序、所述客戶端、所述數(shù)據(jù)服務(wù)器程序和所述元數(shù)據(jù)服務(wù)器進行初始化;S3:在同步運行模式下,所述數(shù)據(jù)采集程序通過所述客戶端完成元數(shù)據(jù)的處理,其中,所述同步運行模式為所述客戶端每次向所述元數(shù)據(jù)服務(wù)器發(fā)起請求后,等待元數(shù)據(jù)請求返回后進行下一步操作;S4:在模式發(fā)現(xiàn)運行模式下,所述數(shù)據(jù)采集程序通過所述客戶端完成元數(shù)據(jù)的處理,其中,所述模式發(fā)現(xiàn)運行模式為所述客戶端每次向所述元數(shù)據(jù)服務(wù)器發(fā)起請求后,等待元數(shù)據(jù)請求返回后進行下一步操作,所述客戶端收集每次元數(shù)據(jù)的請求信息和處理結(jié)果,并將所述請求信息和所述處理結(jié)果對應(yīng)存儲;以及S5:在異步運行模式下,所述數(shù)據(jù)采集程序通過所述客戶端完成元數(shù)據(jù)的處理,其中,所述異步運行模式為所述客戶端根據(jù)對應(yīng)存儲的所述請求信息和所述處理結(jié)果對新請求信息的進行預(yù)判,并按照預(yù)判結(jié)果對新請求信息進行操作。
[0007]根據(jù)本發(fā)明實施例的面向并行數(shù)據(jù)采集的分布式文件系統(tǒng)寫訪問方法,使得面向并行數(shù)據(jù)采集的分布式文件系統(tǒng)能夠降低寫操作的延遲,從而提供更好的寫性能。
[0008]另外,根據(jù)本發(fā)明上述實施例的面向并行數(shù)據(jù)采集的分布式文件系統(tǒng)寫訪問方法,還可以具有如下附加的技術(shù)特征:
[0009]進一步地,所述步驟SI進一步包括:所述客戶端部署于一個物理節(jié)點之上,該物理節(jié)點與集群內(nèi)其它節(jié)點通過所述網(wǎng)絡(luò)互聯(lián);所述元數(shù)據(jù)服務(wù)器部署于所述服務(wù)器集群中的任一所述物理節(jié)點上,通過所述網(wǎng)絡(luò)進行通信;所述數(shù)據(jù)服務(wù)器部署于所述服務(wù)器集群中的任一所述物理節(jié)點上,負責(zé)管理所述物理節(jié)點本地的存儲資源并提供數(shù)據(jù)讀寫服務(wù);所述數(shù)據(jù)采集程序與所述客戶端部署于同一物理節(jié)點上;以及所述數(shù)據(jù)采集設(shè)備,每個所述數(shù)據(jù)采集設(shè)備與所述數(shù)據(jù)采集程序?qū)?yīng)設(shè)置。
[0010]進一步地,所述步驟S2進一步包括:所述數(shù)據(jù)采集程序接收來自所述數(shù)據(jù)采集設(shè)備發(fā)送數(shù)據(jù),確定數(shù)據(jù)寫入的文件路徑,所述文件路徑為所述客戶端在所述文件路徑為所述客戶端在文件系統(tǒng)的掛載點或所述掛載點的文件子目錄;對所述客戶端的所述在同步運行模式、所述模式發(fā)現(xiàn)運行模式和所述異步運行模式進行初始化;所述元數(shù)據(jù)服務(wù)器從本地存儲設(shè)備上加載的元數(shù)據(jù)信息,建立數(shù)據(jù)服務(wù)器列表,所述數(shù)據(jù)服務(wù)器列表用于記錄所有所述數(shù)據(jù)服務(wù)器的信息;以及所述數(shù)據(jù)服務(wù)器獲取所在所述物理節(jié)點的唯一標(biāo)識,初始化所有所述數(shù)據(jù)服務(wù)器的存儲資源,建立與所述元數(shù)據(jù)服務(wù)器之間的通信,將所述存儲資源和所述唯一標(biāo)識報告給所述元數(shù)據(jù)服務(wù)器。
[0011]進一步地,所述步驟S3進一步包括:S301:所述數(shù)據(jù)采集程序從所述數(shù)據(jù)采集設(shè)備上采集所述數(shù)據(jù),采集的所述數(shù)據(jù)以文件的形式寫入所述分布式文件系統(tǒng),在寫入所述分布式文件系統(tǒng)之前,所述數(shù)據(jù)采集程序向所述客戶端的掛載目錄發(fā)起文件數(shù)據(jù)的元數(shù)據(jù)請求并等待處理結(jié)果;S302:所述客戶端接收所述元數(shù)據(jù)請求,將所述元數(shù)據(jù)請求包裝成一個面向元數(shù)據(jù)服務(wù)器的請求,并通過所述網(wǎng)絡(luò)發(fā)送至所述元數(shù)據(jù)服務(wù)器;S303:所述元數(shù)據(jù)服務(wù)器接收所述元數(shù)據(jù)請求,根據(jù)所述元數(shù)據(jù)請求的類型,在所述本地存儲空間上完成元數(shù)據(jù)的修改,或發(fā)現(xiàn)所述元數(shù)據(jù)請求無法執(zhí)行并記錄錯誤信息,所述元數(shù)據(jù)服務(wù)器將所述元數(shù)據(jù)請求的處理結(jié)果包裝成響應(yīng),返送回所述客戶端;S304:所述客戶端接收所述響應(yīng)后,將所述相應(yīng)的結(jié)果返回給所述數(shù)據(jù)采集程序;S305:所述數(shù)據(jù)采集程序接收所述響應(yīng)結(jié)果,如果元數(shù)據(jù)操作成功,則完成相關(guān)操作;若操作失敗,則按照應(yīng)用的內(nèi)部邏輯進行處理。
[0012]進一步地,所述步驟S4進一步包括:S401:所述數(shù)據(jù)采集程序從所述數(shù)據(jù)采集設(shè)備上采集所述數(shù)據(jù),采集的所述數(shù)據(jù)以文件的形式寫入所述分布式文件系統(tǒng),在寫入所述分布式文件系統(tǒng)之前,所述數(shù)據(jù)采集程序向所述客戶端的掛載目錄發(fā)起文件數(shù)據(jù)的元數(shù)據(jù)請求并等待處理結(jié)果;S402:所述客戶端接收所述元數(shù)據(jù)請求,將所述元數(shù)據(jù)請求包裝成一個面向元數(shù)據(jù)服務(wù)器的請求,并通過所述網(wǎng)絡(luò)發(fā)送至所述元數(shù)據(jù)服務(wù)器;S403:所述元數(shù)據(jù)服務(wù)器接收所述元數(shù)據(jù)請求,根據(jù)所述元數(shù)據(jù)請求的類型,在所述本地存儲空間上完成元數(shù)據(jù)的修改,或發(fā)現(xiàn)所述元數(shù)據(jù)請求無法執(zhí)行并記錄錯誤信息,所述元數(shù)據(jù)服務(wù)器將所述元數(shù)據(jù)請求的處理結(jié)果包裝成響應(yīng),返送回所述客戶端;S404:所述客戶端接收響應(yīng),將所述元數(shù)據(jù)操作的操作類型、典型參數(shù)和處理結(jié)果存儲在所述客戶端的元數(shù)據(jù)操作統(tǒng)計結(jié)構(gòu)中;