如何在短短48小時(shí)內(nèi)用云計(jì)算給地球做B超?
今年杭州云棲大會(huì)上,中國(guó)館地震局的地球物理科學(xué)家王偉濤博士在Tech Insight的數(shù)據(jù)存儲(chǔ)技術(shù)實(shí)戰(zhàn)專場(chǎng)做了一場(chǎng)主題分享:名為《云計(jì)算在地震學(xué)研究中的應(yīng)用-利用bcs和海量數(shù)據(jù)創(chuàng)建虛擬地震》。 他介紹,原本需要一年計(jì)算時(shí)間的整個(gè)中國(guó)數(shù)千個(gè)地震臺(tái)兩兩之間的五年數(shù)據(jù)的計(jì)算任務(wù),在云計(jì)算中狂飆,48小時(shí)之內(nèi)就計(jì)算完成了。
這到底是如何實(shí)現(xiàn)的呢?
我們的祖先凝望星河閃耀,卻花費(fèi)萬(wàn)年時(shí)間才摸索出天體運(yùn)行規(guī)律。
我們的前輩坐看潮涌潮平,卻歷經(jīng)千秋萬(wàn)代才能航行到大洋彼岸。
而我們自己,在這片土地上繁衍至今,卻仍舊對(duì)腳下的大地懵然無(wú)知。
從觀察記錄到規(guī)律預(yù)測(cè),幾乎是人類科學(xué)史的全部邏輯。
但每次我們拼盡全力記下的數(shù)據(jù),都只是抬高知識(shí)瀚海的涓涓細(xì)流。
當(dāng)我們提筆開(kāi)始繁復(fù)演算的時(shí)候,期待的是阿基米德跳出浴缸、牛頓舉起蘋果的那一刻。
王偉濤博士正是這樣計(jì)算的執(zhí)筆人,他來(lái)自中國(guó)地震局。他想知道的,是我們腳下大地的每個(gè)細(xì)節(jié)。
浩如煙海的計(jì)算
我們經(jīng)歷的每一次地震,都在提醒自己預(yù)測(cè)和預(yù)警這種災(zāi)害的迫切性。但是,我們距離這個(gè)目標(biāo)還很遠(yuǎn)。
為更好的認(rèn)識(shí)地震這一物理現(xiàn)象,需要極其的詳細(xì)的地殼結(jié)構(gòu)影像,而為了繪制這張地下地圖,又需要詳盡的數(shù)據(jù)計(jì)算。 目前為止人類打到地下最深的井是前蘇聯(lián)鉆探的科拉超深井,約12.2公里,但是地震的震源深度往往在地下十幾到幾十公里,當(dāng)前的科技根本無(wú)法在震源深度開(kāi)展直接觀測(cè)。
所以我們需要依靠分布在全國(guó)的數(shù)千個(gè)地震臺(tái)來(lái)對(duì)地震波進(jìn)行探測(cè),震波在地下的傳播特性,受到地質(zhì)結(jié)構(gòu)的影響,這也是地震波可以用來(lái)繪制地底圖像的原理。這些地震臺(tái)可以感知地震的“大震波”,也同樣可以捕捉日常的“大地噪聲”,例如海潮拍擊大陸的震動(dòng)。王偉濤說(shuō)。
王偉濤告訴記者,像他這樣的地球物理科學(xué)家?guī)缀醵际前雮€(gè)程序員。 因?yàn)閺牡卣鸩ǖ降氐壮上瘢虚g要經(jīng)過(guò)超越一般人想象的大規(guī)模程序計(jì)算。他的計(jì)算模型是這樣的: 每一次震動(dòng)都會(huì)由近至遠(yuǎn)依次傳遞到各個(gè)地震臺(tái),所以理論上來(lái)說(shuō),每個(gè)地震臺(tái)都會(huì)對(duì)同一次震動(dòng)做出自己的記錄,這些數(shù)據(jù)既有差異有又聯(lián)系。
利用這些數(shù)據(jù),可以計(jì)算出一些“虛擬地震”。 用每?jī)蓚€(gè)地震臺(tái)之間進(jìn)行數(shù)據(jù)互相關(guān)對(duì)比計(jì)算,就可以獲取研究中國(guó)地下的總體結(jié)構(gòu)所需要的寶貴數(shù)據(jù)。
虛擬地震可以模擬出和真實(shí)地震一樣的數(shù)據(jù),所以可以用于本來(lái)沒(méi)有發(fā)生地震的地區(qū)的地底成像 每個(gè)地震波數(shù)據(jù)都有 E,N,Z(東西,南北,垂直)三個(gè)向度的分量,全國(guó)2000多個(gè)永久和臨時(shí)地震臺(tái)就是 6000 個(gè)分量,每年的數(shù)據(jù)量大概是 30TB,而我們的總數(shù)據(jù)量已經(jīng)到了 PB 級(jí)別。
由于我們要相互對(duì)比每一個(gè)地震臺(tái)每個(gè)時(shí)間點(diǎn)的每個(gè)分量數(shù)據(jù),這些計(jì)算量是呈指數(shù)級(jí)增長(zhǎng)的。 王偉濤的智慧和經(jīng)驗(yàn),恰恰表現(xiàn)在他所設(shè)計(jì)的程序和算法之上。 但耗費(fèi)很大心力完成這個(gè)算法的王偉濤博士發(fā)現(xiàn),他才踏上了萬(wàn)里長(zhǎng)征的第一步,還有一個(gè)巨大的困難橫亙?cè)诿媲啊?/p>
圖中每?jī)蓚€(gè)地震臺(tái)之間的連線(灰色)都是需要計(jì)算的數(shù)據(jù),總計(jì)算量極其龐大。如果使用單機(jī)對(duì)這些數(shù)據(jù)進(jìn)行計(jì)算,大概需要七年時(shí)間。按照一個(gè)人的職業(yè)生涯二十年計(jì)算的話,我在退休前只能完成三次計(jì)算。在這種情況下,大規(guī)模分布式的云計(jì)算似乎成為了唯一的選擇。
然而,云計(jì)算的機(jī)理絕不像聽(tīng)起來(lái)這么輕盈。記者也采訪到了中國(guó)地震局的合作伙伴阿里云的童鞋們,在他們眼里,云計(jì)算和科學(xué)研究一樣,集合了人類最頂尖的智慧。
所需存儲(chǔ)空間、計(jì)算量和預(yù)計(jì)單機(jī)計(jì)算所需的時(shí)間
分布式存儲(chǔ):有關(guān)農(nóng)場(chǎng)的游戲
云存儲(chǔ)就像一個(gè)大的農(nóng)場(chǎng),每個(gè)服務(wù)器就像一個(gè)工人,而你的數(shù)據(jù)就是羊。阿里云存儲(chǔ)高級(jí)專家承宗說(shuō)。看來(lái)他是個(gè)牧場(chǎng)達(dá)人。“分布式存儲(chǔ)”,可以看作分布式計(jì)算的基礎(chǔ)條件。也就是說(shuō),你的羊要先放進(jìn)阿里云的“農(nóng)場(chǎng)”,它的工人才會(huì)幫你照料、喂養(yǎng)、剪毛、紡線。
對(duì)于王偉濤博士的數(shù)據(jù)來(lái)說(shuō),僅僅是存儲(chǔ)在云端,就需要無(wú)數(shù)“黑科技”。
在將要進(jìn)行的計(jì)算中,計(jì)算系統(tǒng)會(huì)對(duì)存儲(chǔ)系統(tǒng)進(jìn)行大規(guī)模的訪問(wèn)。而這些訪問(wèn)必須要平均地打到服務(wù)器上,絕不能存在熱點(diǎn)。而這還不夠,由于服務(wù)器的硬件故障在大規(guī)模集群中會(huì)變成一個(gè)常態(tài)事件,所以必須做好資源的實(shí)時(shí)調(diào)度和提供故障容忍能力。
例如保證在摘掉一塊硬盤的時(shí)候,其余的硬盤要迅速用備份數(shù)據(jù)把存儲(chǔ)追齊。
承宗舉了以上兩個(gè)例子。這兩個(gè)例子換成農(nóng)場(chǎng)的比喻,大概是如下表述: 農(nóng)場(chǎng)對(duì)于工人的工作量要平均分配,絕不能出現(xiàn)“對(duì)著一個(gè)羊薅羊毛”的情況發(fā)生。另外,農(nóng)場(chǎng)每天都有工人病倒、請(qǐng)假,要在最短的時(shí)間把他的工作合理分配給很多人,這樣別的工人也不至于負(fù)荷過(guò)大。
整個(gè)阿里云的分布式文件系統(tǒng),被命名為盤古。在承宗心里,盤古還有很多智能化的“黑科技”。
他舉例了一個(gè)例子: 我們?nèi)祟惪吹降拇疟P都一樣,但是盤古看到的磁盤各不相同。它會(huì)根據(jù)歷史訪問(wèn)數(shù)據(jù)的積累,例如寫入的速度和效率,對(duì)每一塊磁盤的健康度進(jìn)行打分。
對(duì)于健康狀況不好的磁盤,就相應(yīng)減輕一些工作分配。這些底層的技術(shù),都可以為王偉濤博士下一步真正的計(jì)算做準(zhǔn)備。
承宗說(shuō),在分布式計(jì)算中,數(shù)據(jù)帶寬成為了一個(gè)重要的參數(shù)。從王偉濤博士的角度來(lái)看,如果把數(shù)據(jù)存儲(chǔ)在自己的服務(wù)器上,僅僅利用阿里云的計(jì)算能力進(jìn)行結(jié)果輸出,是不能實(shí)現(xiàn)的。原理很簡(jiǎn)單,分布式計(jì)算的所有服務(wù)器都向一個(gè)存儲(chǔ)單位發(fā)送數(shù)據(jù)讀取請(qǐng)求,帶寬會(huì)被瞬間堵死,再?gòu)?qiáng)大的算力都無(wú)法發(fā)揮。
至于具體數(shù)據(jù),百兆光纖的帶寬一般是 100Mb/s,而硬盤的帶寬最高可達(dá)幾Gb/s,而阿里云存儲(chǔ)內(nèi)網(wǎng)訪問(wèn)帶寬(云計(jì)算系統(tǒng)內(nèi)部)可以高達(dá)Tb/s級(jí)別。
批量計(jì)算:建造一座金字塔
接下來(lái),王偉濤博士的數(shù)據(jù)就會(huì)進(jìn)入最終計(jì)算的環(huán)節(jié)。我熟悉了自己習(xí)慣的 Linux 系統(tǒng),所有的計(jì)算代碼都是在這個(gè)環(huán)境中完成的,如何讓我的代碼在云計(jì)算的環(huán)境中發(fā)揮作用,是一個(gè)很重要的問(wèn)題。王偉濤說(shuō)。
在地震科學(xué)研究方面,阿里云顯然沒(méi)辦法提出算法建議,所以他們需要做的是,提供一個(gè)通用的接口,讓王偉濤可以使用自己機(jī)房中的電腦、界面和Linux 系統(tǒng),來(lái)對(duì)云上的計(jì)算進(jìn)行控制。
阿里云提供的兼容和適配能力,是阿里計(jì)算專家林河山頗為驕傲的地方。 王博士在此之前沒(méi)有使用過(guò)分布式集群,也沒(méi)有使用過(guò)“超算”,所以直接跨越到云上,從操作和控制層面來(lái)說(shuō),對(duì)他來(lái)說(shuō)會(huì)是個(gè)挑戰(zhàn)。
我們提供的計(jì)算接口可以讓單機(jī)程序不做修改就高效執(zhí)行在云環(huán)境下。用戶通過(guò)幾句簡(jiǎn)單的命令就能在云上調(diào)動(dòng)大規(guī)模的計(jì)算資源進(jìn)行分析,而不需要學(xué)習(xí)復(fù)雜的分布式計(jì)算知識(shí)。其實(shí)很多從其他地方過(guò)渡到云計(jì)算的人都會(huì)有這樣的問(wèn)題,所以不僅是王博士,很多其他用戶也會(huì)用到我們的通用計(jì)算接口。他說(shuō)。 這個(gè)時(shí)候,大規(guī)模計(jì)算的障礙基本被掃清了。
不過(guò),林河山告訴記者,云計(jì)算真正的核心技術(shù),還在于批量計(jì)算的算力調(diào)度之上。
大規(guī)模計(jì)算的加速流程和模式 計(jì)算規(guī)模擴(kuò)大之后,就會(huì)造成對(duì)存儲(chǔ)資源的訪問(wèn)非常頻繁,這時(shí),對(duì)于訪問(wèn)的并發(fā)量的控制就要非常“小心”了。
王博士的應(yīng)用有非常多的小I/O請(qǐng)求,如果每一次I/O請(qǐng)求都直接訪問(wèn)云存儲(chǔ),由此帶來(lái)的延時(shí)會(huì)對(duì)計(jì)算效率造成影響。為了進(jìn)一步優(yōu)化計(jì)算性能,批量計(jì)算采取了“分布式緩存”的策略,把有可能會(huì)用到的數(shù)據(jù),提前緩存到計(jì)算節(jié)點(diǎn)周圍。這樣,就可以讓計(jì)算能力不受集群規(guī)模的限制。林河山說(shuō)。
而即使是這樣,還遠(yuǎn)遠(yuǎn)不夠,對(duì)于數(shù)據(jù)訪問(wèn)究竟采取多大“粒度”,是考驗(yàn)系統(tǒng)智能的重要時(shí)刻。如果一次讀取過(guò)多,可能造成帶寬擁堵,如果一次讀取過(guò)少,又會(huì)造成頻繁訪問(wèn)。而針對(duì)不同類型的數(shù)據(jù),都要做出合理的預(yù)判,自動(dòng)地讀取,是一項(xiàng)艱巨的任務(wù)。
打個(gè)比方: 這如同建造一座金字塔,數(shù)萬(wàn)名“奴隸”要分工合作。工程師要決定:是犧牲速度一次性運(yùn)輸多個(gè)石塊到現(xiàn)場(chǎng),還是犧牲數(shù)量,一次快速運(yùn)輸一塊石頭到現(xiàn)場(chǎng)。
同樣,面對(duì)浩瀚的金字塔工程,每時(shí)每刻要分配多少奴隸來(lái)攪拌砂漿,分配多少奴隸來(lái)搬運(yùn)石塊,分別分配多少奴隸來(lái)負(fù)責(zé)建造各個(gè)區(qū)塊,這個(gè)即使是工程師都需要仔細(xì)考量才能完成的任務(wù),都要交給系統(tǒng)自動(dòng)完成,難度可想而知。
當(dāng)然,如此繁復(fù)的計(jì)算過(guò)程,出錯(cuò)是經(jīng)常會(huì)發(fā)生的。
林河山舉了一個(gè)例子: 在渲染追光動(dòng)畫的動(dòng)畫片《小門神》時(shí),阿里云的容錯(cuò)機(jī)制就發(fā)揮了作用。(當(dāng)時(shí)在峰值有 2000臺(tái)服務(wù)器參與了大規(guī)模批量計(jì)算。)一般情況下, 對(duì)于視頻的渲染工作是一個(gè)連續(xù)的長(zhǎng)流程。如果某一幀渲染中哪怕只有一個(gè)節(jié)點(diǎn)出問(wèn)題,都會(huì)造成訪問(wèn)的大規(guī)模延時(shí),造成邏輯上的擁堵,產(chǎn)生“熱點(diǎn)”。
林河山說(shuō):“阿里云的做法是,在計(jì)算出錯(cuò)之后,在最短的時(shí)間內(nèi)重跑,如果在跑的過(guò)程中確認(rèn)節(jié)點(diǎn)存在問(wèn)題,還會(huì)自動(dòng)調(diào)度到另一個(gè)地方,這些對(duì)于用戶來(lái)說(shuō)都是沒(méi)有感知的,但是在背后,我們必須做出大量的努力。
繪制地下的世界
原本需要一年計(jì)算時(shí)間的整個(gè)中國(guó)數(shù)千個(gè)地震臺(tái)兩兩之間的五年數(shù)據(jù)的計(jì)算任務(wù),在云計(jì)算中狂飆,48小時(shí)之內(nèi)就計(jì)算完成了。
這在云計(jì)算時(shí)代來(lái)臨以前是無(wú)法想象的。 從科學(xué)研究的角度來(lái)看,這些數(shù)據(jù)是原始的地震觀測(cè)數(shù)據(jù)的數(shù)據(jù)產(chǎn)品,同時(shí)也是后續(xù)科學(xué)研究所依賴的重要數(shù)據(jù),可以很好地支撐王偉濤進(jìn)行接下來(lái)的研究。 從外界看來(lái)計(jì)算過(guò)程非常順利,而剛才我們所感受的一切艱辛,都只發(fā)生在背后的代碼世界。
借用阿里云產(chǎn)品總監(jiān)李津的話: 當(dāng)計(jì)算結(jié)果輸出的時(shí)候,我們所有的技術(shù)人員都沉默了。
我們多么渴望這樣的數(shù)據(jù)早幾十年被計(jì)算出來(lái),這樣我們就能為人類認(rèn)識(shí)地震這一自然災(zāi)害爭(zhēng)取寶貴的時(shí)間。
拋開(kāi)商業(yè)的云霧,可以看到云計(jì)算真正的的鋒利所在。
王偉濤的研究并沒(méi)有停止,他說(shuō): 目前為止,我只做了2011年到2015年的一個(gè)向度上的數(shù)據(jù)分析,未來(lái)還會(huì)繼續(xù)把更多向度和頻率上的數(shù)據(jù)進(jìn)行計(jì)算。科學(xué)研究的精確度是可以一直提高的。越來(lái)越精確的地底數(shù)據(jù),會(huì)為礦產(chǎn)勘探、防震減災(zāi)和地震科學(xué)研究提供非常強(qiáng)的支持。
科學(xué)的有趣之處,正是在于不斷地嘗試。有可能一覺(jué)醒來(lái)想到新的方法,就要重新改寫公式和代碼,通過(guò)計(jì)算進(jìn)行驗(yàn)證。
也許有一天,屬于王偉濤的那只蘋果會(huì)悄然落下。那一刻,是王偉濤的勝利,也同樣是人類計(jì)算力的勝利。 我們傾盡全力提高算力,把數(shù)據(jù)的涓涓細(xì)流匯聚成洪荒之力,只是因?yàn)槲覀儾辉笇?duì)腳下的大地懵然無(wú)知。