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

2.在系統功能的設計方面,需要使用云計算技術合理地對數據平臺進行設置,需要由以下幾部分組成:數據收集、數據預處理、模式規則以及應用接口,以此來實現數據存儲和挖掘功能。
3.在數據庫的設計方面,要充分利用關系數據庫的特征,減少冗余數據出現的幾率,盡量在單一的地方進行數據存儲,然后通過主鍵以及外鍵來進行動態視圖的構建,這樣可以在編寫程序時方便進行查詢檢索代碼的設定。
就像人類社會中的其他類型產業一樣,云計算也需要在發展的過程中逐漸標準化,相關基礎設施也會逐漸得到完善。我們有理由相信,隨著互聯網在我們生活中的占比和重要性越發凸顯,云計算的用戶和規模將會得到進一步的擴大,而云計算也必將成為我們生活中不可或缺的組成。