盛秀杰 金之鈞 彭 成 景 妍
(中國(guó)石化石油勘探開(kāi)發(fā)研究院,北京 100086)
當(dāng)前大數(shù)據(jù)技術(shù)對(duì)互聯(lián)網(wǎng)行業(yè)的發(fā)展起著非常重要的推動(dòng)作用,大數(shù)據(jù)時(shí)代對(duì)傳統(tǒng)油氣能源行業(yè)的影響亦不例外。PetroV[1-2]的軟件架構(gòu)設(shè)計(jì)與研發(fā),需要進(jìn)一步梳理行業(yè)大數(shù)據(jù)系統(tǒng)的技術(shù)體系及演進(jìn)路線,全方位地重新理解并重構(gòu)現(xiàn)有軟件體系架構(gòu)和構(gòu)件,以滿足大數(shù)據(jù)高效存儲(chǔ)這一核心架構(gòu)需求和促進(jìn)行業(yè)內(nèi)針對(duì)性深度學(xué)習(xí)解決方案的實(shí)施。在明確了“PetroV即計(jì)算機(jī)”的體系架構(gòu)設(shè)計(jì)理念的前提下,PetroV重構(gòu)、升級(jí)了可服務(wù)于端到端的大數(shù)據(jù)建模、分析與深度學(xué)習(xí)策略的體系架構(gòu)。特別是,在保留支持不同類(lèi)型專(zhuān)業(yè)軟件二次開(kāi)發(fā)的軟件重用架構(gòu)特點(diǎn)的基礎(chǔ)上,全新設(shè)計(jì)并實(shí)現(xiàn)了基于地理網(wǎng)格剖分和地質(zhì)信息編碼的全新分布式文件系統(tǒng)(PetroV DFS)。
在考慮大數(shù)據(jù)4V(Volume,Variety,Velocity,Veracity)特征的前提下,以谷歌為代表的互聯(lián)網(wǎng)公司提出、發(fā)展了系列大數(shù)據(jù)存儲(chǔ)、分析與深度學(xué)習(xí)技術(shù)。在TB、PB、EB直至ZB規(guī)模的大數(shù)據(jù)背景下,利用統(tǒng)計(jì)分析、機(jī)器學(xué)習(xí)等算法分析諸如用戶(hù)行為、社會(huì)輿情趨勢(shì),挖掘數(shù)據(jù)潛在的商業(yè)價(jià)值。2006年,機(jī)器學(xué)習(xí)領(lǐng)域?qū)<襀inton等提出的深度學(xué)習(xí)為代表的人工智能技術(shù),正以前所未有的速度改變?nèi)藗兊纳a(chǎn)、生活和思維方式[3]??紤]大數(shù)據(jù)存儲(chǔ)和深度學(xué)習(xí)為代表的新技術(shù)對(duì)油氣發(fā)現(xiàn)將有重要影響,油氣勘探開(kāi)發(fā)行業(yè)的專(zhuān)業(yè)軟件開(kāi)發(fā)應(yīng)及時(shí)緊跟大數(shù)據(jù)下人工智能技術(shù)的發(fā)展。
與互聯(lián)網(wǎng)行業(yè)有所區(qū)別的是,油氣勘探部署的大數(shù)據(jù)特征表現(xiàn)為5V:從大數(shù)據(jù)量(Volume)的數(shù)字巖心、疊前地震數(shù)據(jù)、基礎(chǔ)地質(zhì)圖件等,到對(duì)應(yīng)的多種結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)機(jī)制(Variety),到疊前地震采集、油氣田開(kāi)發(fā)等系列新技術(shù)帶來(lái)的快速數(shù)據(jù)更新(Velocity),到地下地質(zhì)認(rèn)識(shí)的不確定性對(duì)數(shù)據(jù)質(zhì)量的影響(Veracity),到油氣勘探研究特有的從地震解釋、地質(zhì)編圖、油氣藏模擬等學(xué)科間交叉形成的數(shù)據(jù)間關(guān)聯(lián)與衍變(Variability)。
在實(shí)踐不同層次軟件架構(gòu)設(shè)計(jì)原則和系列設(shè)計(jì)模式為代表的軟件重用技術(shù)方面,PetroV做了一些積極的嘗試和探索。在延續(xù)具有較低耦合性、較高可重用性和可維護(hù)性的軟件架構(gòu)特點(diǎn)的基礎(chǔ)上,PetroV的架構(gòu)設(shè)計(jì)擴(kuò)展了如何高效存儲(chǔ)大數(shù)據(jù)量的行業(yè)核心基礎(chǔ)數(shù)據(jù),以及如何易于低成本構(gòu)建大數(shù)據(jù)(Big Data)、大計(jì)算(Big Compute)、大模型(Big Model)下的地質(zhì)智能(Geological Intelligence,GI)深度學(xué)習(xí)解決方案(圖1)。PetroV的地質(zhì)智能強(qiáng)調(diào)在數(shù)量巨大、結(jié)構(gòu)復(fù)雜、類(lèi)型眾多的行業(yè)地震、測(cè)井等基礎(chǔ)數(shù)據(jù)背景下,與基礎(chǔ)研究成果充分結(jié)合,在高勘探程度層系應(yīng)用針對(duì)性深度學(xué)習(xí)模型,即從基礎(chǔ)數(shù)據(jù)中挖掘油氣特征,整合關(guān)聯(lián)關(guān)系,獲得識(shí)別勘探目標(biāo)的能力; 利用學(xué)習(xí)到的認(rèn)知能力在低勘探程度層系識(shí)別新的勘探目標(biāo),并與盆地成藏演化與模擬、區(qū)帶油氣藏規(guī)模統(tǒng)計(jì)、油氣藏復(fù)雜地質(zhì)建模等油氣定量評(píng)價(jià)數(shù)學(xué)模型實(shí)現(xiàn)高度耦合,客觀、全面地推理模擬或恢復(fù)盆地演化、勘探目標(biāo)形成、油氣藏物性條件動(dòng)態(tài)變化等關(guān)鍵地質(zhì)過(guò)程。
在原有本地空間數(shù)據(jù)庫(kù)存儲(chǔ)基礎(chǔ)上,通過(guò)增加分布式文件存儲(chǔ)層及配套的領(lǐng)域計(jì)算服務(wù)層,PetroV的新架構(gòu)體現(xiàn)了“PetroV即計(jì)算機(jī)”的軟件架構(gòu)設(shè)計(jì)理念。與傳統(tǒng)的高性能計(jì)算機(jī)部署方案有較大不同,PetroV可被部署于科研人員的非高性能(廉價(jià))計(jì)算機(jī)上,計(jì)算和存儲(chǔ)資源的配置對(duì)于科研人員而言是透明的,這樣可顯著降低軟件部署的復(fù)雜度和成本,并提高資源使用的靈活性。新軟件架構(gòu)思考與應(yīng)對(duì)主要表現(xiàn)在三個(gè)方面。
圖1 體現(xiàn)地質(zhì)智能的PetroV新一代中間件架構(gòu)關(guān)鍵需求
圖2 PetroV新版軟件架構(gòu)設(shè)計(jì)
(1)持久化層:支持本地和遠(yuǎn)程兩級(jí)文件系統(tǒng)。該層的設(shè)計(jì)認(rèn)為大數(shù)據(jù)背景下,不存在“一刀切”式的存儲(chǔ)機(jī)制能夠滿足所有類(lèi)型的數(shù)據(jù)存儲(chǔ)需求。如關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)技術(shù)(Relational Database Management System,RDBMS)在面對(duì)大數(shù)據(jù)量的數(shù)字巖心、疊前地震數(shù)據(jù)時(shí),除元數(shù)據(jù)層面的有效存儲(chǔ)管理外,在數(shù)據(jù)內(nèi)容方面并無(wú)有效的存儲(chǔ)機(jī)制與索引技術(shù)[4-5]。新一代PetroV的軟件架構(gòu)在已有本地空間數(shù)據(jù)庫(kù)存儲(chǔ)機(jī)制(Spatial Database,SDB)和單一分布式文件存儲(chǔ)機(jī)制的基礎(chǔ)上,面對(duì)數(shù)字巖心、疊前(后)地震數(shù)據(jù)及測(cè)井等不同類(lèi)型大數(shù)據(jù),進(jìn)一步統(tǒng)一了元數(shù)據(jù)建模思路,借鑒谷歌分布式存儲(chǔ)技術(shù)(Google File System,GFS)[6-7]研發(fā)了從全球尺度到單井?dāng)?shù)字巖心厘米級(jí)尺度的、體現(xiàn)地理位置相近、存儲(chǔ)位置相近的分布式存儲(chǔ)文件系統(tǒng)(PetroV DFS)。
(2)領(lǐng)域?qū)樱褐С稚疃葘W(xué)習(xí)服務(wù)與專(zhuān)業(yè)算法服務(wù)兩級(jí)計(jì)算框架。該層的設(shè)計(jì)強(qiáng)調(diào)以深度學(xué)習(xí)服務(wù)并行計(jì)算框架為基礎(chǔ),開(kāi)發(fā)系列油氣勘探開(kāi)發(fā)相關(guān)的領(lǐng)域計(jì)算、分析或模擬引擎,實(shí)現(xiàn)深度學(xué)習(xí)與專(zhuān)業(yè)模型的深層次耦合。開(kāi)發(fā)不同類(lèi)型的大數(shù)據(jù)下深度學(xué)習(xí)和專(zhuān)業(yè)算法并行計(jì)算框架。其中,面向空間數(shù)據(jù)庫(kù)存儲(chǔ)強(qiáng)調(diào)的是空間統(tǒng)計(jì)分析引擎的設(shè)計(jì)與開(kāi)發(fā);面向地震和測(cè)井以及數(shù)字巖心的分布式存儲(chǔ),更多關(guān)注批處理計(jì)算框架的代碼實(shí)現(xiàn),提煉面向地震、測(cè)井及數(shù)字巖心資料的MAP和REDUCE計(jì)算與分析范式,用于大數(shù)據(jù)下三維場(chǎng)景顯示、地震解釋和屬性分析等。
(3)應(yīng)用層:支持軟件集成的通用二次應(yīng)用軟件開(kāi)發(fā)框架。該層的設(shè)計(jì)強(qiáng)調(diào)借助系列大數(shù)據(jù)存儲(chǔ)和分析引擎以及配套的基礎(chǔ)設(shè)施二次開(kāi)發(fā)接口,包括GIS圖形和分析框架、統(tǒng)計(jì)信息可視化框架、三維建模和分析框架等,可快速開(kāi)發(fā)、部署用于大型、分布式、對(duì)大量數(shù)據(jù)進(jìn)行訪問(wèn)和分析的系列專(zhuān)業(yè)軟件版本,同時(shí)提供容錯(cuò)功能。利用現(xiàn)有的軟件架構(gòu)基礎(chǔ)設(shè)施,借助油氣勘探領(lǐng)域?qū)<壹皥F(tuán)隊(duì)的力量和智慧,構(gòu)建勘探開(kāi)發(fā)專(zhuān)業(yè)軟件生態(tài)系統(tǒng),通過(guò)大數(shù)據(jù)集成、共享,各個(gè)軟件版本交叉復(fù)用形成智力資源和知識(shí)服務(wù)能力,全面升級(jí)勘探部署規(guī)劃水平,創(chuàng)新大數(shù)據(jù)下的勘探部署規(guī)劃新模式。
PetroV DFS核心設(shè)計(jì)在于其二級(jí)存儲(chǔ)機(jī)制的建立: 基于ST-based KIDA建模技術(shù)的本地空間數(shù)據(jù)庫(kù)集成,以及基于地理網(wǎng)格和地質(zhì)信息編碼的分布式文件存儲(chǔ)(圖3)。
圖3 PetroV DFS分布式文件系統(tǒng)架構(gòu)
PetroV的ST-based KIDA建模技術(shù)(圖3虛線框)包括兩部分: ①在關(guān)注不同數(shù)據(jù)類(lèi)型的本體分類(lèi)及描述(如用途、數(shù)據(jù)范圍、數(shù)據(jù)來(lái)源、上下文描述、可靠性描述等)的基礎(chǔ)上,強(qiáng)調(diào)從源數(shù)據(jù)→信息→知識(shí)的衍變過(guò)程,突出“活動(dòng)(A)”作為復(fù)合對(duì)象可很好地關(guān)聯(lián)其他上下文活動(dòng)(如構(gòu)建作業(yè)流)以及自身所需三個(gè)數(shù)據(jù)層次的輸入、輸出; ②在編譯(加載、清洗、規(guī)則化)不同形態(tài)(矢量、柵格、文本等)的行業(yè)基礎(chǔ)數(shù)據(jù)的基礎(chǔ)上,按區(qū)域背景類(lèi)、沉積類(lèi)等專(zhuān)業(yè)主題組織基礎(chǔ)數(shù)據(jù),以地理信息系統(tǒng)技術(shù)(GIS)的空間圖形表征規(guī)范,以及圖層數(shù)據(jù)組織模式進(jìn)行內(nèi)容呈現(xiàn)。
急劇增加的井、震文件大小,給相關(guān)專(zhuān)業(yè)軟件系統(tǒng)的研發(fā)帶來(lái)艱巨挑戰(zhàn)[8-10]。目前,業(yè)內(nèi)以采用HDFS(Hadoop Distributed File System)存儲(chǔ)方案居多。PetroV之所以未采用HDFS存儲(chǔ)解決方案,而是強(qiáng)調(diào)自主研發(fā),主要有以下幾方面考慮:
(1)適宜HDFS存儲(chǔ)的對(duì)象更多是網(wǎng)頁(yè)為代表的非結(jié)構(gòu)化明碼數(shù)據(jù),其文件管理與存儲(chǔ)機(jī)制沒(méi)有考慮井震數(shù)據(jù)的結(jié)構(gòu)化存儲(chǔ)特點(diǎn);
(2)基于HDFS存儲(chǔ)的數(shù)據(jù)分析解決方案,更多適合批處理而不是流模式的實(shí)時(shí)計(jì)算,數(shù)據(jù)實(shí)時(shí)訪問(wèn)能力有待提升;
(3)HDFS基于文件目錄管理數(shù)據(jù)子塊文件,ZB級(jí)子塊文件數(shù)量形成的深層次目錄結(jié)構(gòu)的訪問(wèn)是個(gè)性能瓶頸。
對(duì)此,PetroV DFS側(cè)重設(shè)計(jì)一種新的分布式子塊數(shù)據(jù)文件編碼機(jī)制,高效管理ZB級(jí)數(shù)量的分布式子塊文件; 基于TB級(jí)井震數(shù)據(jù)特點(diǎn),建立針對(duì)性分布式存儲(chǔ)機(jī)制,實(shí)現(xiàn)快速存取(圖4)。
2.2.1 全球空間網(wǎng)格編碼(Location Code)
在全球范圍進(jìn)行網(wǎng)格劃分,把經(jīng)緯度按照16×16進(jìn)行分割,形成256個(gè)格子,每個(gè)格子在下一級(jí)中又被分成16×16個(gè)格子,依此類(lèi)推,共形成7級(jí)網(wǎng)格,最細(xì)一級(jí)網(wǎng)格精度達(dá)到厘米級(jí)。經(jīng)度范圍是-180°~180°,即從西經(jīng)180°到東經(jīng)180°;緯度范圍與經(jīng)度范圍保持一致,也擴(kuò)展成-180°~180°(圖5)。
圖4 PetroV DFS的子塊文件編碼與轉(zhuǎn)換
圖5 全球空間網(wǎng)格劃分方案
不同分層下的空間網(wǎng)格需要有唯一空間信息編碼。該碼第一位和第二位分別是第一層級(jí)網(wǎng)格下的經(jīng)向標(biāo)識(shí)和緯向標(biāo)識(shí),第三位和第四位是第二層級(jí)網(wǎng)格下的經(jīng)向標(biāo)識(shí)和緯向標(biāo)識(shí),依此類(lèi)推。即定位網(wǎng)格編碼共14位,奇數(shù)位編碼為經(jīng)向編碼,偶數(shù)位編碼為緯向編碼,取值范圍均為十六進(jìn)制的0~F。
2.2.2 不同類(lèi)型地質(zhì)信息編碼(Geological Code)
對(duì)于要存儲(chǔ)的數(shù)據(jù),分配分布式文件時(shí),除了空間網(wǎng)格編碼,還需進(jìn)一步補(bǔ)充其它類(lèi)型地質(zhì)信息,形成最終的分布式子塊文件對(duì)應(yīng)的文件編碼(Data Chunk File Code)。補(bǔ)充地質(zhì)信息包含多項(xiàng)基礎(chǔ)數(shù)據(jù)地質(zhì)描述信息,包括方位或形狀,數(shù)據(jù)長(zhǎng)度,數(shù)據(jù)類(lèi)型等。地震類(lèi)型的基礎(chǔ)數(shù)據(jù),編碼信息體現(xiàn)的主要是地震測(cè)網(wǎng)描述信息;測(cè)井類(lèi)型基礎(chǔ)數(shù)據(jù)包括測(cè)井曲線類(lèi)型、井眼方位、測(cè)井深度等描述信息。如增加井眼的方位編碼,值為0~F,對(duì)應(yīng)360°分割為16等分后的每一份。
2.2.3 以空間網(wǎng)格為聚簇單元,分配、定位分布式子塊文件
將需要進(jìn)行分布式存儲(chǔ)的基礎(chǔ)數(shù)據(jù),考慮其所在地域位置及地質(zhì)信息,在它被賦給子塊文件編碼后,再將其傳給分布式服務(wù)器。分布式服務(wù)器根據(jù)編碼解譯出具體的地理網(wǎng)格信息,然后通過(guò)空間網(wǎng)格定位的規(guī)則決定數(shù)據(jù)要存放于哪個(gè)空間網(wǎng)格以及要存儲(chǔ)的數(shù)據(jù)要切割成多少子塊。同時(shí),利用一致性散列算法,將不同的網(wǎng)格中的數(shù)據(jù)存儲(chǔ)到不同的機(jī)器中實(shí)現(xiàn)分布式存儲(chǔ)。分布式服務(wù)器中的地理位置服務(wù)維護(hù)空間網(wǎng)格相關(guān)信息,記錄了已有數(shù)據(jù)的各個(gè)網(wǎng)格,并且記錄了每個(gè)網(wǎng)格中含有哪些數(shù)據(jù)。其中,每個(gè)網(wǎng)格可能含有多個(gè)分布式子塊文件,每個(gè)分布式子塊文件中可能含有多組分布式數(shù)據(jù),當(dāng)一組分布式數(shù)據(jù)大小超過(guò)文件容量限制時(shí),一組分布式數(shù)據(jù)也會(huì)進(jìn)一步切分,分段存到多個(gè)分布式子塊文件中(圖6)。
圖6 PetroV DFS的子塊文件分配
PetroV DFS分布式子塊文件的內(nèi)容有鍵值對(duì)存儲(chǔ)的測(cè)井、八叉樹(shù)子塊存儲(chǔ)的地震數(shù)據(jù)、空間索引存儲(chǔ)的地質(zhì)編圖三種種類(lèi)型。在2017年發(fā)表相關(guān)研究成果[2]的基礎(chǔ)上,本文繼續(xù)重點(diǎn)闡述基于八叉樹(shù)切分的子塊數(shù)據(jù)文件的讀寫(xiě)過(guò)程。地震數(shù)據(jù)文件的上傳,是指將SEGY源文件切分成多份小文件,發(fā)送到不同機(jī)器上進(jìn)行存儲(chǔ)。子塊的參數(shù)配置包括最終子塊的長(zhǎng)寬高、存儲(chǔ)節(jié)點(diǎn)地址、子塊備份數(shù)量。通過(guò)八叉樹(shù)切分的算法,可計(jì)算出總切分層級(jí)數(shù),以及不同子塊所包含的數(shù)據(jù)在源地震文件中的對(duì)應(yīng)位置。各個(gè)子塊發(fā)送到哪個(gè)存儲(chǔ)節(jié)點(diǎn),在圖6中已經(jīng)約定。讀、寫(xiě)地震類(lèi)數(shù)據(jù)(動(dòng)輒幾百GB),其讀(對(duì)應(yīng)的子塊文件合并為SEGY文件)、寫(xiě)(SEGY文件切分成具體子塊文件)分布式,速度優(yōu)化是關(guān)鍵。地震數(shù)據(jù)體分布式切分與合并的速度有幾個(gè)優(yōu)化方向: 將更多的工作交給存儲(chǔ)節(jié)點(diǎn)而不是本地來(lái)做; 盡可能做到順序讀寫(xiě)文件; 降低讀寫(xiě)對(duì)象切換的頻率。
將源地震數(shù)據(jù)預(yù)切割成多份中間文件,每份中間文件對(duì)應(yīng)一個(gè)存儲(chǔ)節(jié)點(diǎn)。然后將中間文件傳輸?shù)綄?duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)中。如圖7左所示,以順序讀源文件、順序?qū)懼虚g文件的方式來(lái)最大限度地減少本地時(shí)間耗費(fèi),將中間文件傳輸?shù)酱鎯?chǔ)節(jié)點(diǎn)后,本地?cái)?shù)據(jù)文件的切分就已完成。
(1)確定所需的遠(yuǎn)程存儲(chǔ)節(jié)點(diǎn)及對(duì)應(yīng)的本地中間文件。每個(gè)地震道數(shù)據(jù)中包含此道的線號(hào)和道號(hào),據(jù)此可以得到其位于源數(shù)據(jù)立方體對(duì)應(yīng)的地震測(cè)網(wǎng)的平面位置;地震道在深度方向上按照子塊文件的時(shí)窗的大小進(jìn)行分割,分割后的數(shù)據(jù)分別屬于不同的子塊,也是每次寫(xiě)入中間文件的最小數(shù)據(jù)單元。根據(jù)最小單元的線號(hào)道號(hào)以及深度得到其在源數(shù)據(jù)立方體中的空間位置,從而通過(guò)八叉樹(shù)切分算法計(jì)算出此最小單元所屬的子塊號(hào)以及其在子塊中的位置,通過(guò)子塊號(hào)獲取此最小單元所屬的存儲(chǔ)節(jié)點(diǎn)和對(duì)應(yīng)的中間文件。
(2)快速切分并寫(xiě)入本地中間文件。源地震數(shù)據(jù)以地震道為單位,每個(gè)地震道相當(dāng)于源立方體高方向上的一整條,每次讀取若干個(gè)地震道,PetroV默認(rèn)讀取的地震道數(shù)為合起來(lái)超過(guò)100MB的最小的道數(shù)量,大小也可由用戶(hù)通過(guò)自己的硬件配置和內(nèi)存大小做出調(diào)整。然后順序遍歷各個(gè)存儲(chǔ)節(jié)點(diǎn)對(duì)應(yīng)的中間文件,將這批地震道數(shù)據(jù)中屬于當(dāng)前存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)寫(xiě)入當(dāng)前中間文件。數(shù)據(jù)與存儲(chǔ)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系通過(guò)八叉樹(shù)的切分方法來(lái)計(jì)算得到。
(3)異步傳輸本地中間文件,根據(jù)圖6揭示的存儲(chǔ)網(wǎng)格情形,生成子塊文件。每個(gè)存儲(chǔ)節(jié)點(diǎn)對(duì)應(yīng)的中間文件生成完畢后,將這些中間文件依次傳輸?shù)礁鱾€(gè)存儲(chǔ)節(jié)點(diǎn)。在存儲(chǔ)節(jié)點(diǎn)中,對(duì)接收到的中間文件,每次順序讀取約100MB數(shù)據(jù),大小可配置,數(shù)據(jù)量具體大小為最小單元加上兩個(gè)整型數(shù)據(jù)的整數(shù)倍,將數(shù)據(jù)寫(xiě)入到各個(gè)子塊中。如圖7右所示,遍歷此100MB數(shù)據(jù),每次讀取最小單元的子塊號(hào)和在子塊中的位置,然后將最小單元數(shù)據(jù)寫(xiě)入到對(duì)應(yīng)的子塊文件中。該步驟實(shí)現(xiàn)了中間文件的順序讀。
圖7 地震數(shù)據(jù)子塊文件切分與存儲(chǔ)
對(duì)于分布式的數(shù)據(jù)體,可再轉(zhuǎn)換回本地SEGY數(shù)據(jù)體。如圖8所示,其具體流程與生成相反。首先對(duì)于各個(gè)存儲(chǔ)節(jié)點(diǎn),將子塊合并回中間文件,然后將中間文件下載到本地,本地再將這些中間文件合并為本地?cái)?shù)據(jù)體。
(1)寫(xiě)入存儲(chǔ)節(jié)點(diǎn)對(duì)應(yīng)的中間文件。中間文件生成方法為在存儲(chǔ)節(jié)點(diǎn)按照源數(shù)據(jù)體的線、道方向來(lái)進(jìn)行遍歷,處理每個(gè)地震道時(shí),按照子塊的時(shí)窗進(jìn)行分割,得到各個(gè)最小單元,最小單元如果屬于當(dāng)前的存儲(chǔ)節(jié)點(diǎn),則從對(duì)應(yīng)的子塊中讀取數(shù)據(jù),存到中間文件中。八叉樹(shù)參數(shù)與生成時(shí)相同,寫(xiě)入時(shí)省略掉子塊號(hào)和在子塊中的位置這兩個(gè)整型數(shù)據(jù)。
若有多副本,則只有子塊第一次生成所在的存儲(chǔ)節(jié)點(diǎn)才寫(xiě)這個(gè)子塊的數(shù)據(jù)到中間文件,如果存在存儲(chǔ)節(jié)點(diǎn)掉線的情況,則再?gòu)钠渌北局蝎@取數(shù)據(jù)。同時(shí)本地端記錄下各個(gè)子塊是從哪些存儲(chǔ)節(jié)點(diǎn)中獲取的,用于后面合并中間文件成為數(shù)據(jù)體時(shí)判斷從哪個(gè)中間文件中取數(shù)據(jù)。此步驟做到了中間文件的順序?qū)?,同時(shí)減少了本地的工作量。
圖8 地震數(shù)據(jù)合并流程
(2)異步存儲(chǔ)節(jié)點(diǎn)的中間文件。依次下載,并按照線、道方向來(lái)進(jìn)行遍歷,生成各個(gè)地震道。每次要從中間文件默認(rèn)讀取總和約100MB數(shù)據(jù),大小可以配置,具體大小為生成數(shù)據(jù)體地震道長(zhǎng)度的整數(shù)倍。本地遍歷和存儲(chǔ)節(jié)點(diǎn)遍歷的方式完全相同,所以合并時(shí)所需的數(shù)據(jù)順序與中間文件中的數(shù)據(jù)順序一致,只是這些數(shù)據(jù)需要從不同中間文件去獲取。為了做到中間文件的順序讀,PetroV遍歷中間文件,對(duì)每個(gè)中間文件,讀取屬于此100MB的內(nèi)容,再切換到下一個(gè)中間文件進(jìn)行讀取。每次讀取的最小單元為子塊的高。此步驟實(shí)現(xiàn)了源文件的順序?qū)?、中間文件的順序讀。
(3)合并本地文件為SEGY文件。
PetroV的代碼實(shí)現(xiàn)主要采用C++泛化編程,目的就是希望以最小軟件開(kāi)發(fā)代價(jià)獲得足以與需要多數(shù)人精心編寫(xiě)的代碼相匹敵的專(zhuān)用性、高度簡(jiǎn)潔和效率。PetroV DFS的泛化編程始于梳理服務(wù)大數(shù)據(jù)存儲(chǔ)與分析的每個(gè)算法的模板函數(shù)定義,分析調(diào)用參數(shù)順序?qū)瘮?shù)執(zhí)行的影響; 基于編譯時(shí)推導(dǎo)不同標(biāo)簽(Tag)類(lèi)型,分發(fā)、調(diào)用匹配的算法具體實(shí)現(xiàn); 在算法實(shí)現(xiàn)函數(shù)中,進(jìn)一步區(qū)分是否有不同的算法策略; 在不同的算法策略中,會(huì)調(diào)用到具體功能類(lèi)的實(shí)現(xiàn),這些功能類(lèi)可以被不同的、且被證明成功的系列遠(yuǎn)程過(guò)程調(diào)用(Remote Calling Function,RCF)開(kāi)源接口替代(圖9)。
圖9 PetroV DFS泛化接口設(shè)計(jì)的
本文采用某工區(qū)的全方位共反射角道集,進(jìn)行了多次分布式文件的生成與讀寫(xiě)操作,目的在于驗(yàn)證:普通廉價(jià)計(jì)算機(jī)和低帶寬網(wǎng)絡(luò)環(huán)境下,相對(duì)于單機(jī)本地訪問(wèn)SEGY文件,PetroV DFS的網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí)間增加并不明顯,但新建的分布式文件對(duì)后續(xù)系列高計(jì)算強(qiáng)度要求的解釋算法的支撐,是單機(jī)本地文件無(wú)法做到的。試驗(yàn)選定的疊前地震道集是通過(guò)廣義Kirchhoff偏移獲取的深度域共成像點(diǎn)道集,大小為440GB,Inline范圍是1332~1732,共401條縱測(cè)線; Crossline范圍是1002~1402,有401條聯(lián)絡(luò)測(cè)線; 共計(jì)160801個(gè)CDP點(diǎn),每個(gè)CDP點(diǎn)處為一個(gè)1000道的疊前道集,因此總共有160801000道,每道有751個(gè)采樣點(diǎn)。測(cè)試對(duì)象是24臺(tái)2010年購(gòu)買(mǎi)的服務(wù)器(圖10),遠(yuǎn)低于現(xiàn)今主流服務(wù)器配置。
經(jīng)過(guò)多次試驗(yàn),440GB地震文件的分布式存、取穩(wěn)定。以分布式文件的寫(xiě)入為例,總體時(shí)間約為9h40min,包括三步: ①掃描整體道頭的時(shí)間為5h10min,這是不同類(lèi)型軟件應(yīng)用SEGY地震數(shù)據(jù)必須的一步[11-13],后續(xù)道頭掃描會(huì)基于第一次掃描建立的索引文件,在5min內(nèi)完成所有道頭掃描; ②按照八叉樹(shù)算法切割SEGY文件,形成本地中間文件,異步上傳對(duì)應(yīng)存儲(chǔ)節(jié)點(diǎn),時(shí)間為4h7min; ③每一存儲(chǔ)節(jié)點(diǎn)最終形成440GB對(duì)應(yīng)的分布式子塊文件的時(shí)間為21min。
基于PetroV DFS文件系統(tǒng),PetroV持續(xù)開(kāi)發(fā)了系列基于MapReduce編程模型為代表的地震屬性分析、儲(chǔ)層解釋算法,使得普通工作計(jì)算機(jī)運(yùn)行大數(shù)據(jù)量地震解釋算法變?yōu)榭尚?。同上配置,以新產(chǎn)生的440GB分布式文件為輸入,做440GB的全時(shí)窗頻率振幅屬性計(jì)算,所需時(shí)間僅為2h51min?;谠摲植际轿募到y(tǒng),PetroV開(kāi)發(fā)了系列地震解釋算法(表1)[14-17]。
圖10 PetroV的分布式存儲(chǔ)(計(jì)算)節(jié)點(diǎn)配置
模塊名稱(chēng)輸 入Map計(jì)算Reduce計(jì)算輸 出切片1個(gè)疊后地震數(shù)據(jù)體、1個(gè)屬性體按照面元獲取整道數(shù)據(jù),并計(jì)算切片計(jì)算時(shí)窗內(nèi)取平均1個(gè)切片三角時(shí)頻分析1個(gè)疊后地震數(shù)據(jù)體按照面元獲取整道數(shù)據(jù),并運(yùn)算三角濾波按照面元內(nèi)CDP序號(hào)順序存放4個(gè)屬性體和6個(gè)切片4個(gè)屬性體、6個(gè)切片瞬時(shí)屬性1個(gè)疊后地震數(shù)據(jù)體按照面元獲取整道數(shù)據(jù),并運(yùn)算瞬時(shí)屬性按照面元內(nèi)CDP序號(hào)順序存放1-13個(gè)數(shù)據(jù)體1~13個(gè)屬性體,索引文件記錄輸出哪些屬性?xún)A角、方位角1個(gè)疊后地震數(shù)據(jù)體按照立方體獲取數(shù)據(jù)體,并運(yùn)算傾角、方位角按照面元內(nèi)CDP序號(hào)順序存放2個(gè)數(shù)據(jù)體1個(gè)傾角體、1個(gè)方位角體α濾波1個(gè)疊后地震數(shù)據(jù)體按照面元獲取整道數(shù)據(jù),并運(yùn)算Alpha濾波按照面元內(nèi)CDP序號(hào)順序存放1個(gè)數(shù)據(jù)體1個(gè)疊后地震數(shù)據(jù)各向異性反演1個(gè)360道集按照面元獲取360道集,并運(yùn)算各向異性反演按照面元內(nèi)CDP序號(hào)順序存放4個(gè)數(shù)據(jù)體1個(gè)各向同性屬性、2個(gè)各向異性屬性及1個(gè)裂縫發(fā)育方向橢圓擬合1個(gè)CMP道集、2個(gè)速度體按照面元獲取CMP道集和速度體,運(yùn)算橢圓擬合按照面元內(nèi)CDP序號(hào)順序存放2個(gè)數(shù)據(jù)體1個(gè)各向異性屬性、1個(gè)裂縫發(fā)育方向貝葉斯三參數(shù)反演3個(gè)角度部分疊加數(shù)據(jù)體、3個(gè)彈性參數(shù)低頻模型體按照面元獲取6個(gè)數(shù)據(jù)體,并運(yùn)算三參數(shù)反演按照面元內(nèi)CDP序號(hào)順序存放3個(gè)數(shù)據(jù)體3個(gè)彈性參數(shù)反演結(jié)果基追蹤反演1個(gè)疊后地震數(shù)據(jù)體、1個(gè)彈性參數(shù)低頻模型體按照面元獲取2個(gè)數(shù)據(jù)體,并運(yùn)算基追蹤反演按照面元內(nèi)CDP序號(hào)順序存放2個(gè)數(shù)據(jù)體1個(gè)反射系數(shù)反演結(jié)果、1個(gè)波阻抗反演結(jié)果頁(yè)巖物性參數(shù)反演3個(gè)彈性參數(shù)反演體、3個(gè)物性參數(shù)低頻模型體按照面元獲取6個(gè)數(shù)據(jù)體,并運(yùn)算頁(yè)巖物性參數(shù)反演按照面元內(nèi)CDP序號(hào)順序存放3個(gè)數(shù)據(jù)體3個(gè)物性參數(shù)反演結(jié)果脆性反演3個(gè)角度反射系數(shù)體、3個(gè)彈性參數(shù)低頻模型體按照面元獲取6個(gè)數(shù)據(jù)體,并運(yùn)算脆性指數(shù)反演按照面元內(nèi)CDP序號(hào)順序存放3個(gè)數(shù)據(jù)體3個(gè)彈性參數(shù)反演結(jié)果相干體1個(gè)疊后地震數(shù)據(jù)體按照立方體獲取數(shù)據(jù)體,并運(yùn)算相干體按照面元內(nèi)CDP序號(hào)順序存放1-3個(gè)數(shù)據(jù)體1~3個(gè)相干屬性曲率1個(gè)傾角屬性體、1個(gè)方位角屬性體按照立方體獲取數(shù)據(jù)體,并運(yùn)算曲率按照面元內(nèi)CDP序號(hào)順序存放1-10個(gè)數(shù)據(jù)體1~10個(gè)曲率屬性體角道集1個(gè)CMP道集、2個(gè)速度體按照面元獲取CMP道集和速度體,并運(yùn)算角道集按照面元內(nèi)CDP序號(hào)順序存放1個(gè)數(shù)據(jù)體1個(gè)角道集時(shí)窗屬性1個(gè)疊后地震數(shù)據(jù)體、1個(gè)速度體按照面元獲取數(shù)據(jù)體,并運(yùn)算時(shí)窗屬性按照面元內(nèi)CDP序號(hào)順序存放1個(gè)點(diǎn)1個(gè)切片三維地震數(shù)據(jù)的雕刻與蝕刻1個(gè)疊后地震數(shù)據(jù)體、1個(gè)屬性體按照面元獲取數(shù)據(jù)體存儲(chǔ)各個(gè)點(diǎn)和面1個(gè)mesh網(wǎng)文件,文件頭中記錄點(diǎn)和面的個(gè)數(shù)三維數(shù)字巖心的雕刻與蝕刻1個(gè)巖心數(shù)據(jù)體按照面元獲取數(shù)據(jù)體存儲(chǔ)各個(gè)點(diǎn)和面1個(gè)mesh網(wǎng)文件,文件頭中記錄點(diǎn)和面的個(gè)數(shù)
區(qū)別于HDFS為代表的分布式文件系統(tǒng),PetroV DFS充分考慮測(cè)井、地震等行業(yè)基礎(chǔ)數(shù)據(jù)存儲(chǔ)與應(yīng)用特點(diǎn),突出了ZB級(jí)文件數(shù)量的分布式高效管理和TB級(jí)文件大小的分布式低延時(shí)讀寫(xiě)等關(guān)鍵技術(shù)實(shí)現(xiàn),體現(xiàn)地理位置相近、存儲(chǔ)位置相近的分布式存儲(chǔ)與應(yīng)用特點(diǎn):
(1)基于全球地理網(wǎng)格剖分編碼和不同類(lèi)型基礎(chǔ)數(shù)據(jù)的地質(zhì)信息編碼,分布式數(shù)據(jù)子塊文件數(shù)量的分配沒(méi)有上限、文件命名不會(huì)有沖突,可快速定位或創(chuàng)建分布式數(shù)據(jù)子塊文件;
(2)設(shè)計(jì)空間索引子塊存儲(chǔ),八叉樹(shù)切分子塊存儲(chǔ)、空間鍵值對(duì)子塊存儲(chǔ)三種存儲(chǔ)機(jī)制,快速讀寫(xiě)大數(shù)據(jù)量的地質(zhì)編圖與二維數(shù)字巖心、三維地震數(shù)據(jù)和測(cè)井?dāng)?shù)據(jù);
(3)基于ST-Based KIDA元數(shù)據(jù)建模技術(shù)的本地空間數(shù)據(jù)庫(kù)集成方案,可實(shí)現(xiàn)以自主GIS平臺(tái)技術(shù)為中心的數(shù)據(jù)集成、以自主分布式大數(shù)據(jù)存儲(chǔ)為中心的數(shù)據(jù)管理和以解決實(shí)際勘探問(wèn)題為中心的數(shù)據(jù)分析與挖掘(深度學(xué)習(xí)解決方案)。