科普文:從大資料到Hadoop,Spark,Storm

青衫無名發表於2017-07-03

大資料,官方定義是指那些資料量特別大、資料類別特別複雜的資料集,這種資料集無法用傳統的資料庫進行儲存,管理和處理。大資料的主要特點為資料量大(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常用於線上的實時的大資料處理。

End.



本文轉自d1net(轉載)


相關文章