大數據基礎知識:分佈式計算、服務器集羣[zz]

大數據中的數據量很是巨大,達到了PB級別。並且這龐大的數據之中,不只僅包括結構化數據(如數字、符號等數據),還包括非結構化數據(如文本、圖像、聲音、視頻等數據)。這使得大數據的存儲,管理和處理很難利用傳統的關係型數據庫去完成。在大數據之中,有價值的信息每每深藏其中。這就須要對大數據的處理速度要很是快,才能短期以內就能從大量的複雜數據之中獲取到有價值的信息。在大數據的大量複雜的數據之中,一般不只僅包含真實的數據,一些虛假的數據也混雜其中。這就須要在大數據的處理中將虛假的數據剔除,利用真實的數據來分析得出真實的結果。算法

大數據分析(Big Data Analysis)數據庫

大數據,表面上看就是大量複雜的數據,這些數據自己的價值並不高,可是對這些大量複雜的數據進行分析處理後,卻能從中提煉出頗有價值的信息。對大數據的分析,主要分爲五個方面:可視化分析(Analytic Visualization)、數據挖掘算法(Date Mining Algorithms)、預測性分析能力(Predictive Analytic Capabilities)、語義引擎(Semantic Engines)和數據質量管理(Data Quality Management)。服務器

可視化分析是普通消費者經常能夠見到的一種大數據分析結果的表現形式,好比說百度製做的「百度地圖春節人口遷徙大數據」就是典型的案例之一。可視化分析將大量複雜的數據自動轉化成直觀形象的圖表,使其可以更加容易的被普通消費者所接受和理解。網絡

數據挖掘算法是大數據分析的理論核心,其本質是一組根據算法事先定義好的數學公式,將收集到的數據做爲參數變量帶入其中,從而可以從大量複雜的數據中提取到有價值的信息。著名的「啤酒和尿布」的故事就是數據挖掘算法的經典案例。沃爾瑪經過對啤酒和尿布購買數據的分析,挖掘出之前未知的二者間的聯繫,並利用這種聯繫,提高了商品的銷量。亞馬遜的推薦引擎和谷歌的廣告系統都大量使用了數據挖掘算法。架構

預測性分析能力是大數據分析最重要的應用領域。從大量複雜的數據中挖掘出規律,創建起科學的事件模型,經過將新的數據帶入模型,就能夠預測將來的事件走向。預測性分析能力經常被應用在金融分析和科學研究領域,用於股票預測或氣象預測等。框架

語義引擎是機器學習的成果之一。過去,計算機對用戶輸入內容的理解僅僅停留在字符階段,不能很好的理解輸入內容的意思,所以經常不能準確的瞭解用戶的需求。經過對大量複雜的數據進行分析,讓計算機從中自我學習,可使計算機可以儘可能精確的瞭解用戶輸入內容的意思,從而把握住用戶的需求,提供更好的用戶體驗。蘋果的Siri和谷歌的Google Now都採用了語義引擎。機器學習

數據質量管理是大數據在企業領域的重要應用。爲了保證大數據分析結果的準確性,須要將大數據中不真實的數據剔除掉,保留最準確的數據。這就須要創建有效的數據質量管理系統,分析收集到的大量複雜的數據,挑選出真實有效的數據。分佈式

分佈式計算(Distributed Computing)oop

對於如何處理大數據,計算機科學界有兩大方向:第一個方向是集中式計算,就是經過不斷增長處理器的數量來加強單個計算機的計算能力,從而提升處理數據的速度。第二個方向是分佈式計算,就是把一組計算機經過網絡相互鏈接組成分散系統,而後將須要處理的大量數據分散成多個部分,交由分散系統內的計算機組同時計算,最後將這些計算結果合併獲得最終的結果。儘管分散系統內的單個計算機的計算能力不強,可是因爲每一個計算機只計算一部分數據,並且是多臺計算機同時計算,因此就分散系統而言,處理數據的速度會遠高於單個計算機。學習

過去,分佈式計算理論比較複雜,技術實現比較困難,所以在處理大數據方面,集中式計算一直是主流解決方案。IBM的大型機就是集中式計算的典型硬件,不少銀行和政府機構都用它處理大數據。不過,對於當時的互聯網公司來講,IBM的大型機的價格過於昂貴。所以,互聯網公司的把研究方向放在了可使用在廉價計算機上的分佈式計算上。

服務器集羣(Server Cluster)

服務器集羣是一種提高服務器總體計算能力的解決方案。它是由互相鏈接在一塊兒的服務器羣所組成的一個並行式或分佈式系統。服務器集羣中的服務器運行同一個計算任務。所以,從外部看,這羣服務器表現爲一臺虛擬的服務器,對外提供統一的服務。

儘管單臺服務器的運算能力有限,可是將成百上千的服務器組成服務器集羣后,整個系統就具有了強大的運算能力,能夠支持大數據分析的運算負荷。Google,Amazon,阿里巴巴的計算中內心的服務器集羣都達到了5000臺服務器的規模。

大數據的技術基礎:MapReduce、Google File System和BigTable

2003年到2004年間,Google發表了MapReduce、GFS(Google File System)和BigTable三篇技術論文,提出了一套全新的分佈式計算理論。

MapReduce是分佈式計算框架,GFS(Google File System)是分佈式文件系統,BigTable是基於Google File System的數據存儲系統,這三大組件組成了Google的分佈式計算模型。

Google的分佈式計算模型相比於傳統的分佈式計算模型有三大優點:首先,它簡化了傳統的分佈式計算理論,下降了技術實現的難度,能夠進行實際的應用。其次,它能夠應用在廉價的計算設備上,只需增長計算設備的數量就能夠提高總體的計算能力,應用成本十分低廉。最後,它被Google應用在Google的計算中心,取得了很好的效果,有了實際應用的證實。

後來,各家互聯網公司開始利用Google的分佈式計算模型搭建本身的分佈式計算系統,Google的這三篇論文也就成爲了大數據時代的技術核心。

主流的三大分佈式計算系統:Hadoop,Spark和Storm

因爲Google沒有開源Google分佈式計算模型的技術實現,因此其餘互聯網公司只能根據Google三篇技術論文中的相關原理,搭建本身的分佈式計算系統。

Yahoo的工程師Doug Cutting和Mike Cafarella在2005年合做開發了分佈式計算系統Hadoop。後來,Hadoop被貢獻給了Apache基金會,成爲了Apache基金會的開源項目。Doug Cutting也成爲Apache基金會的主席,主持Hadoop的開發工做。

Hadoop採用MapReduce分佈式計算框架,並根據GFS開發了HDFS分佈式文件系統,根據BigTable開發了HBase數據存儲系統。儘管和Google內部使用的分佈式計算系統原理相同,可是Hadoop在運算速度上依然達不到Google論文中的標準。

不過,Hadoop的開源特性使其成爲分佈式計算系統的事實上的國際標準。Yahoo,Facebook,Amazon以及國內的百度,阿里巴巴等衆多互聯網公司都以Hadoop爲基礎搭建本身的分佈式計算系統。

Spark也是Apache基金會的開源項目,它由加州大學伯克利分校的實驗室開發,是另一種重要的分佈式計算系統。它在Hadoop的基礎上進行了一些架構上的改良。Spark與Hadoop最大的不一樣點在於,Hadoop使用硬盤來存儲數據,而Spark使用內存來存儲數據,所以Spark能夠提供超過Hadoop100倍的運算速度。可是,因爲內存斷電後會丟失數據,Spark不能用於處理須要長期保存的數據。

Storm是Twitter主推的分佈式計算系統,它由BackType團隊開發,是Apache基金會的孵化項目。它在Hadoop的基礎上提供了實時運算的特性,能夠實時的處理大數據流。不一樣於Hadoop和Spark,Storm不進行數據的收集和存儲工做,它直接經過網絡實時的接受數據而且實時的處理數據,而後直接經過網絡實時的傳回結果。

Hadoop,Spark和Storm是目前最重要的三大分佈式計算系統,Hadoop經常使用於離線的複雜的大數據處理,Spark經常使用於離線的快速的大數據處理,而Storm經常使用於在線的實時的大數據處理。

相關文章
相關標籤/搜索