加州大學圣迭亞哥分校 鄭 然
云計算指的是我們通過網(wǎng)絡(luò)按照自己的需求擴展性地獲取資源的過程,而在這個過程中,我們將提供資源的網(wǎng)絡(luò)稱為云。網(wǎng)絡(luò)上的資源的存儲量可以說是非常大的,可以隨時進行獲取,滿足自身的需求,然后按照使用狀況進行付費,這種模式就像我們使用水電一樣進行資料的使用。在近幾年,因為云計算具有擴展性高、安全方便、價格低廉以及規(guī)模龐大等優(yōu)點,應(yīng)用的推廣得到了極大的發(fā)展。
Map-Reduce技術(shù)的運用極大地提高了我們的工作效能,如我們需要找出一本電子書中某個詞組的出現(xiàn)頻率,在傳統(tǒng)方法中,我們可能需要制作一個程序,然后將其部署到若干臺計算機上,再將該書分為若干個等分,每一臺計算機進行一個人的工作,雖然速度也夠快,但是工作程序相對會麻煩很多,我們需要人工在計算機上進行復制,人工地將書本進行分割,最后還要進行整理。但是使用Map-Reduce的話就會簡便很多,我們可以使用框架將文件集的拆分、程序的復制以及整理工作都定義好,而我們做的只是對整個任務(wù)進行定義,Map-Reduce自然會替我們完成所有工作。
該計算模型主要面向的是并行計算分布樣式的計算環(huán)境,其借助了LISP以及其他相關(guān)函數(shù)語言的相關(guān)功能,將原先使用復雜的大規(guī)模集群分布計算方法分割成兩個相對簡明的函數(shù)階段,即Map函數(shù)階段與Reduce函數(shù)計算,使用兩個階段協(xié)同合作的方法來支撐云計算的計算力。Map-Reduce 的主要功能包括以下幾種:
(1)數(shù)據(jù)的劃分以及計算任務(wù)的調(diào)度
系統(tǒng)會將一個完成的作業(yè)中的整體數(shù)據(jù)分割成若干個數(shù)據(jù)塊兒,每個數(shù)據(jù)塊兒針對某個任務(wù),然后自動對計算節(jié)點進行調(diào)度,以此來處理更多的數(shù)據(jù)塊。
(2)數(shù)據(jù)與代碼的相互定位
為了盡量減少數(shù)據(jù)通信,Map-Reduce的一個基本原則就是本地化地進行數(shù)據(jù)處理,即單一的計算節(jié)點要對其本地磁盤的數(shù)據(jù)盡可能地進行處理,這樣就在一定程度上實現(xiàn)了代碼端向數(shù)據(jù)端的轉(zhuǎn)移。
(3)對系統(tǒng)進行優(yōu)化
為了減少數(shù)據(jù)通信所造成的消耗,需要數(shù)據(jù)進入Reduce節(jié)點之前進行一定程度的合并處理。除此之外,系統(tǒng)還需要進行一定量的計算性能方面的優(yōu)化,從多個計算任務(wù)中選取完成效率最高的完成者作為結(jié)果。
(4)計算檢測與數(shù)據(jù)恢復
在使用低端商務(wù)服務(wù)器構(gòu)成的Map-Reduce計算集群中,硬件方面和軟件方面都會突然性出現(xiàn)錯誤,所以Map-Reduce需要能通過計算檢測出錯節(jié)點,并且調(diào)配新的節(jié)點,以應(yīng)對出錯節(jié)點的計算任務(wù)。
雖然在整個云計算系統(tǒng)中,單個節(jié)點失能的概率不是很大,但是因為整個集群中的節(jié)點數(shù)量十分龐大,這樣就會擴大系統(tǒng)的失效率,在日常工作中,我們主要采取兩種方法對失效的節(jié)點進行檢測:
(1)PUSH
整個系統(tǒng)中的節(jié)點會按照一定頻率向檢測者發(fā)送“存活”信息,如果檢測者還能收到該信息,則證明該節(jié)點仍然沒有失效,但是如果在規(guī)定的周期內(nèi),節(jié)點沒有發(fā)送信息,則認為該節(jié)點已經(jīng)死亡,則需要采取措施加以解決。
(2)PULL
顧名思義,與PUSH法相反,由檢測者對各個節(jié)點發(fā)出“詢問”信息,各個節(jié)點在收到檢測者發(fā)來的信息后會進行回復,如果檢測者在預定的時間內(nèi)沒有收到該節(jié)點的信息回復,則認為該節(jié)點已經(jīng)死亡。另外,網(wǎng)絡(luò)問題異界硬件問題都會導致節(jié)點失效的現(xiàn)象發(fā)生。
對兩種方法進行比較各有優(yōu)劣,PULL方法的長處在于可以在將要進行任務(wù)分配時進行主動性質(zhì)的檢測,而PUSH方式的長處在于通信量相對較小,在具體使用的過程中,可以根據(jù)系統(tǒng)的要求來進行方法的選擇。
冗余技術(shù)存在的意義在于能夠有效防止因為節(jié)點失效而出現(xiàn)的服務(wù)中斷現(xiàn)象,比如谷歌的GFS主要就是利用了冗余計算來達到提高自身容錯率的目的,當用戶輸入的文件被分塊的時候,各個分塊會被分別制作復制品存放在不同的數(shù)據(jù)服務(wù)器中,而系統(tǒng)本身仍然會根據(jù)唯一的那個ID來進行數(shù)據(jù)的操作。
在傳統(tǒng)類型的數(shù)據(jù)庫中,數(shù)據(jù)的模式大多被提前進行定義,而其數(shù)據(jù)的完整性大多需要通過約束關(guān)系來實現(xiàn),以此來確保數(shù)據(jù)不會重復進行存儲,并且用這個關(guān)系將所有的數(shù)據(jù)進行關(guān)聯(lián)。Key 數(shù)據(jù)的存儲系統(tǒng)內(nèi)部由不同的“域”組成,這就相當于我們常用到的表格,而其改進是一個域,可以有不同的形態(tài)屬性。不同域之間的關(guān)系以及單個域內(nèi)各項數(shù)據(jù)的關(guān)系是不進行預先定義的,所有相關(guān)的內(nèi)容都被存儲在域中,而且每個域中的數(shù)據(jù)數(shù)量和內(nèi)容也都不同,這樣就可以用來匹配云服務(wù)的不同指令類型,提供足夠的數(shù)據(jù)資源。
冗余技術(shù)也被應(yīng)用在了數(shù)據(jù)的存儲過程中,在將副本發(fā)送到各個節(jié)點中時,如果主版本的各個節(jié)點都沒有失效,那么更新后的操作也會在其副本中得到體現(xiàn)。如果主版本節(jié)點失效,那么更新后的操作就不能順利發(fā)送到所有副本,這樣數(shù)據(jù)就會不一致,而這里我們就可以使用各個版本的時間排序來實現(xiàn)版本計算器的功能,如果節(jié)點已經(jīng)失效,那么就可以利用其存在來判斷更新操作在節(jié)點中的版本的分支種類,然后進行沖突的解決。
1.企業(yè)想要積極運用云計算達到應(yīng)有效果,需要對自身數(shù)據(jù)存儲平臺采取三層結(jié)構(gòu)的設(shè)計,以數(shù)據(jù)預處理、云計算以及數(shù)據(jù)挖掘平臺為分層,以此來優(yōu)化平臺功能以實現(xiàn)數(shù)據(jù)存儲以及挖掘的功能。具體圖示如下:
2.在系統(tǒng)功能的設(shè)計方面,需要使用云計算技術(shù)合理地對數(shù)據(jù)平臺進行設(shè)置,需要由以下幾部分組成:數(shù)據(jù)收集、數(shù)據(jù)預處理、模式規(guī)則以及應(yīng)用接口,以此來實現(xiàn)數(shù)據(jù)存儲和挖掘功能。
3.在數(shù)據(jù)庫的設(shè)計方面,要充分利用關(guān)系數(shù)據(jù)庫的特征,減少冗余數(shù)據(jù)出現(xiàn)的幾率,盡量在單一的地方進行數(shù)據(jù)存儲,然后通過主鍵以及外鍵來進行動態(tài)視圖的構(gòu)建,這樣可以在編寫程序時方便進行查詢檢索代碼的設(shè)定。
就像人類社會中的其他類型產(chǎn)業(yè)一樣,云計算也需要在發(fā)展的過程中逐漸標準化,相關(guān)基礎(chǔ)設(shè)施也會逐漸得到完善。我們有理由相信,隨著互聯(lián)網(wǎng)在我們生活中的占比和重要性越發(fā)凸顯,云計算的用戶和規(guī)模將會得到進一步的擴大,而云計算也必將成為我們生活中不可或缺的組成。