Hadoop、Spark和Storm

大數據(Big Data)

大數據,官方定義是指那些數據量特別大、數據類別特別複雜的數據集,這種數據集無法用傳統的數據庫進行存儲,管理和處理。大數據的主要特點爲數據量大(Volume)數據類別複雜(Variety)數據處理速度快(Velocity)數據真實性高(Veracity),合起來被稱爲4V。

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

大數據分析(Big Data Analysis)

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

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

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

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

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

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

分佈式計算(Distributed Computing)

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

過去,分佈式計算理論比較複雜,技術實現比較困難,因此在處理大數據方面,集中式計算一直是主流解決方案。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常用於在線的實時的大數據處理。
發佈了9 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章