商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)課件_第1頁
商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)課件_第2頁
商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)課件_第3頁
商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)課件_第4頁
商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)課件_第5頁
已閱讀5頁,還剩153頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

大數(shù)據(jù)技術(shù)概述大數(shù)據(jù)技術(shù)概述大數(shù)據(jù)技術(shù)的概念與現(xiàn)狀2011年,中國互聯(lián)網(wǎng)行業(yè)持有數(shù)據(jù)總量達(dá)到1.9EB(1EB字節(jié)相當(dāng)于10億GB)2013年,我們生成這樣規(guī)模的信息量只需10分鐘2015年,全球被創(chuàng)建和復(fù)制的數(shù)據(jù)總量將增長到8.2EB以上2020年,全球電子設(shè)備存儲的數(shù)據(jù)將暴增30倍,達(dá)到35ZB?從數(shù)據(jù)的生成到消耗,時間窗口非常小,可用于生成決策的時間非常少大數(shù)據(jù)技術(shù)的概念與現(xiàn)狀2011年,中國互聯(lián)網(wǎng)行業(yè)持有數(shù)據(jù)總量每秒鐘發(fā)送290萬封電子郵件每分鐘向youtube上傳60個小時的視頻每天在微信上長傳1億條信息淘寶網(wǎng)的日成交量是2000億元每秒鐘發(fā)送290萬封電子郵件大數(shù)據(jù)包含大量的半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)10%的結(jié)構(gòu)化數(shù)據(jù),存儲在數(shù)據(jù)庫中90%的非結(jié)構(gòu)化數(shù)據(jù),它們與人類信息密切相關(guān)非結(jié)構(gòu)化數(shù)據(jù)類型多樣郵件、視頻、微博位置信息、鏈接信息手機呼叫、網(wǎng)頁點擊大數(shù)據(jù)包含大量的半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)

池塘捕魚(數(shù)據(jù)庫)vs.大海捕魚(大數(shù)據(jù))

數(shù)據(jù)規(guī)模:“池塘”的處理對象通常以MB為基本單位,而“大?!眲t常常以GB,甚至是TB、PB為基本處理單位。數(shù)據(jù)類型:“池塘”中數(shù)據(jù)的種類單一,往往僅僅有一種或少數(shù)幾種,這些數(shù)據(jù)又以結(jié)構(gòu)化數(shù)據(jù)為主?!按蠛!敝袛?shù)據(jù)的種類繁多,數(shù)以千計,而這些數(shù)據(jù)又包含著結(jié)構(gòu)化、半結(jié)構(gòu)化以及非結(jié)構(gòu)化的數(shù)據(jù),并且半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)所占份額越來越大。模式和數(shù)據(jù)的關(guān)系:傳統(tǒng)的數(shù)據(jù)庫先有模式,然后才會產(chǎn)生數(shù)據(jù)。這就好比是先選好合適的“池塘”,然后才會向其中投放適合在該“池塘”環(huán)境生長的“魚”。大數(shù)據(jù)難以預(yù)先確定模式,模式只有在數(shù)據(jù)出現(xiàn)之后才能確定,且模式隨著數(shù)據(jù)量的增長處于不斷的演變之中。

池塘捕魚(數(shù)據(jù)庫)vs.大海捕魚(大數(shù)據(jù))

數(shù)據(jù)規(guī)處理對象:傳統(tǒng)數(shù)據(jù)庫中數(shù)據(jù)僅作為處理對象。而在大數(shù)據(jù)時代,要將數(shù)據(jù)作為一種資源來輔助解決其他諸多領(lǐng)域的問題。處理工具:捕撈“池塘”中的“魚”,一種漁網(wǎng)或少數(shù)幾種基本就可以應(yīng)對。但是在“大?!敝?,不可能存在一種漁網(wǎng)能夠捕獲所有的魚類處理對象:處理技術(shù)大數(shù)據(jù)時代對數(shù)據(jù)處理的實時性、有效性提出了更高要求,傳統(tǒng)的常規(guī)技術(shù)手段根本無法應(yīng)付。大數(shù)據(jù)時代使用的新技術(shù),主要包括分布式緩存、分布式數(shù)據(jù)庫、分布式文件系統(tǒng)、各種NoSQL分布式存儲方案、分布式計算系統(tǒng)等。處理技術(shù)大數(shù)據(jù)處理的基本流程大數(shù)據(jù)處理的基本流程為數(shù)據(jù)的抽取和集成、數(shù)據(jù)分析以及數(shù)據(jù)解釋。即在合適工具的輔助下,對廣泛異構(gòu)的數(shù)據(jù)源進行抽取和集成,結(jié)果按照一定的標(biāo)準(zhǔn)進行統(tǒng)一存儲,并利用合適的數(shù)據(jù)分析技術(shù)對存儲的數(shù)據(jù)進行分析,從中提取有益的知識并利用恰當(dāng)?shù)姆绞綄⒔Y(jié)果展現(xiàn)給終端用戶。大數(shù)據(jù)處理的基本流程大數(shù)據(jù)處理的基本流程為數(shù)據(jù)的抽取和集成、數(shù)據(jù)處理方式流處理流處理的處理模式將數(shù)據(jù)視為流,源源不斷的數(shù)據(jù)組成了數(shù)據(jù)流。當(dāng)新的數(shù)據(jù)到來時就立刻處理并返回所需的結(jié)果。批處理批處理是指用戶將一批作業(yè)提交給處理系統(tǒng)后就不再干預(yù),由操作系統(tǒng)控制它們自動運行。數(shù)據(jù)處理方式流處理大數(shù)據(jù)處理要求分布式計算分布式計算是指運行在多個處理單元上的任務(wù)合作求解一個規(guī)模很大的計算問題這些處理單元可與相互通信和協(xié)作以快速、高效求解大型復(fù)雜問題。并行計算可以微秒為單位處理大規(guī)模數(shù)據(jù),比如天氣預(yù)報,股票數(shù)據(jù)分析等。大數(shù)據(jù)處理要求分布式計算大規(guī)模集群并行分布式計算的不足在多臺機器上對分布式數(shù)據(jù)進行分析會產(chǎn)生巨大的性能開銷,即使采用千兆比特或萬兆比特帶寬的網(wǎng)絡(luò),隨機讀取速度和連續(xù)讀取速度都會比內(nèi)存慢幾個數(shù)量級?,F(xiàn)在高速局域網(wǎng)技術(shù)使得網(wǎng)絡(luò)讀取速度比硬盤讀取要快很多。因此,將數(shù)據(jù)存儲在其他節(jié)點上比存儲在硬盤上的性能要好,而且還可以在多個節(jié)點上并行處理數(shù)據(jù)集大規(guī)模集群并行分布式計算的不足分布式系統(tǒng)可靠性也是一個大問題,一個擁有10個節(jié)點的集群很容易出現(xiàn)節(jié)點故障。這可以通過在節(jié)點間復(fù)制數(shù)據(jù)來解決,對數(shù)據(jù)進行復(fù)制,既可以提高數(shù)據(jù)分析的效率,也可以通過冗余來應(yīng)對節(jié)點故障。當(dāng)然,數(shù)據(jù)集越大,對數(shù)據(jù)副本的管理和維護也越困難。一些數(shù)據(jù)分析軟件,比如SAS、SPSS等因其數(shù)據(jù)處理能力受限于單機的計算能力,對大數(shù)據(jù)的處理顯得力不從心分布式系統(tǒng)可靠性也是一個大問題,一個擁有10個節(jié)點的集群很容基本的大數(shù)據(jù)處理技術(shù)HadoopMapReduceHDFSNoSql基本的大數(shù)據(jù)處理技術(shù)HadoopHadoop概述Hadoop是一個開源的可運行于大規(guī)模集群上的分布式并行編程框架,它實現(xiàn)了Map/Reduce計算模型。Hadoop能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理,并且是以一種可靠、高效、可伸縮的方式進行處理的借助于Hadoop,程序員可以輕松地編寫分布式并行程序,將其運行于計算機集群上,完成海量數(shù)據(jù)的計算。Hadoop概述Hadoop是一個開源的可運行于大規(guī)模集群上2008年4月,Hadoop打破世界紀(jì)錄,成為最快排序1TB數(shù)據(jù)的系統(tǒng)。運行在一個910節(jié)點的群集,Hadoop在209秒內(nèi)排序了1TB的數(shù)據(jù),擊敗了前一年的297秒冠軍。11月,谷歌在報告中生成,它的MapReduce實現(xiàn)執(zhí)行1TB數(shù)據(jù)的排序只用了68秒。2009年5月,Yahoo的團隊使用Hadoop對1TB的數(shù)據(jù)進行排序只花了62秒時間。2008年4月,Hadoop打破世界紀(jì)錄,成為最快排序1TBHadoop的特點Hadoop采用了分布式存儲方式,提高了讀寫速度,并擴大了存儲容量。采用MapReduce來整合分布式文件系統(tǒng)上的數(shù)據(jù),可保證分析和處理數(shù)據(jù)的高效。得Hadoop可以部署在低廉的計算機集群中,同時不限于某個操作系統(tǒng)。Hadoop的特點Hadoop采用了分布式存儲方式,提高了讀Hadoop框架應(yīng)用舉例求20個數(shù)據(jù)中的最大數(shù),一般的編程方式把第一個數(shù)據(jù)開始往后面一個個的比較,總是把更大的數(shù)據(jù)記錄下來,這樣順序比較下去,最后就得到了最大的數(shù)據(jù);但是Hadoop的做法是把這20個數(shù)據(jù)分成4組,每組5個數(shù)據(jù),每組采用Map函數(shù)求出最大值,然后后每組把求得的各自最大值交給Reduce,由Reduce得出最后的最大值;Hadoop框架應(yīng)用舉例求20個數(shù)據(jù)中的最大數(shù),一般的編程方Hadoop框架的體系結(jié)構(gòu)HDFS和MapReduce是Hadoop的兩大核心。HDFS在集群上實現(xiàn)了分布式文件系統(tǒng),MapReduce在集群上實現(xiàn)了分布式計算和任務(wù)處理。HDFS在MapReduce任務(wù)處理過程中提供了文件操作和存儲等支持,MapReduce在HDFS的基礎(chǔ)上實現(xiàn)了任務(wù)的分發(fā)、跟蹤、執(zhí)行等工作,并收集結(jié)果,二者相互作用,完成了Hadoop分布式集群的主要任務(wù)。Hadoop框架的體系結(jié)構(gòu)HDFS和MapReduce是HaHadoop的優(yōu)勢數(shù)據(jù)存儲在哪一臺計算機上,就由這臺計算機進行這部分?jǐn)?shù)據(jù)的計算,這樣可以減少數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸,降低對網(wǎng)絡(luò)帶寬的需求。在Hadoop這樣的基于集群的分布式并行系統(tǒng)中,計算結(jié)點可以很方便地擴充,而因它所能夠提供的計算能力近乎是無限的,但是由是數(shù)據(jù)需要在不同的計算機之間流動,故網(wǎng)絡(luò)帶寬變成了瓶頸,是非常寶貴的,“本地計算”是最有效的一種節(jié)約網(wǎng)絡(luò)帶寬的手段,業(yè)界把這形容為“移動計算比移動數(shù)據(jù)更經(jīng)濟”。Hadoop的優(yōu)勢數(shù)據(jù)存儲在哪一臺計算機上,就由這臺計算機進MapReduce概述MapReduce是一個簡單易用的軟件框架,基于它可以將任務(wù)分發(fā)到由上千臺商用機器組成的集群上,并以一種高容錯的方式并行處理大量的數(shù)據(jù)集,實現(xiàn)Hadoop的并行任務(wù)處理功能。MapReduce是一種并行編程模式,這種模式使得軟件開發(fā)者可以輕松地編寫出分布式并行程序。MapReduce概述MapReduce是一個簡單易用的軟件MapReduce包括Map(映射)和Reduce(化簡)兩個階段,可以進行海量數(shù)據(jù)分割、任務(wù)分解與結(jié)果匯總,從而完成海量數(shù)據(jù)的并行處理。適合用MapReduce來處理的數(shù)據(jù)集,需要可以分解成許多小的數(shù)據(jù)集,而且每一個小數(shù)據(jù)集都可以完全并行地進行處理。MapReduce極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統(tǒng)上。MapReduce包括Map(映射)和Reduce(化簡)兩MapReduce的優(yōu)點MapReduce將傳統(tǒng)的查詢、分解及數(shù)據(jù)分析進行分布式處理,將處理任務(wù)分配到不同的處理節(jié)點,因此具有更強的并行處理能力。作為一個簡化的并行處理的編程模型,MapReduce還降低了開發(fā)并行應(yīng)用的門檻。MapReduce的優(yōu)點MapReduce將傳統(tǒng)的查詢、分解商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)MapReduce工作原理MapReduce的工作原理其實是先分后合的數(shù)據(jù)處理方式。Map即“分解”,把海量數(shù)據(jù)分割成了若干部分,分給多臺處理器并行處理;Reduce即“合并”,把各臺處理器處理后的結(jié)果進行匯總操作以得到最終結(jié)果。MapReduce工作原理MapReduce的工作原理其實利用一個輸入的key/value對集合來產(chǎn)生一個輸出的key/value對集合。MapReduce用兩個函數(shù)來表達(dá)這個計算:Map和Reduce。用戶自定義的map函數(shù)接收一個輸入的key/value對,然后產(chǎn)生一個中間key/value對的集合。MapReduce把所有具有相同key值的value集合在一起,然后傳遞給reduce函數(shù)。用戶自定義的reduce函數(shù)接收key和相關(guān)的value集合。reduce函數(shù)合并這些value值,形成一個較小的value集合。用戶只需要編寫map和reduce函數(shù),而如何分配調(diào)用資源,則交給Hadoop去做。利用一個輸入的key/value對集合來產(chǎn)生一個輸出的ke如果采用MapReduce來統(tǒng)計不同幾何形狀的數(shù)量,它會先把任務(wù)分配到兩個節(jié)點,由兩個節(jié)點分別并行統(tǒng)計,然后再把它們的結(jié)果匯總,得到最終的計算結(jié)果。如果采用MapReduce來統(tǒng)計不同幾何形狀的數(shù)量,它會先把商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)一個Map-Reduce作業(yè)(job)通常會把輸入的數(shù)據(jù)集切分為若干獨立的數(shù)據(jù)塊,由map任務(wù)(task)以完全并行的方式處理它們??蚣軙ap的輸出先進行排序,然后把結(jié)果輸入給reduce任務(wù)。通常作業(yè)的輸入和輸出都會被存儲在文件系統(tǒng)中。整個框架負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控,以及重新執(zhí)行已經(jīng)失敗的任務(wù)。一個Map-Reduce作業(yè)(job)通常會把輸入的數(shù)據(jù)集切Map-Reduce框架和分布式文件系統(tǒng)是運行在一組相同的節(jié)點上的,即計算節(jié)點和存儲節(jié)點通常在一起。這種配置允許框架在那些已經(jīng)存好數(shù)據(jù)的節(jié)點上高效地調(diào)度任務(wù),這可以使整個集群的網(wǎng)絡(luò)帶寬被非常高效地利用。Map-Reduce框架和分布式文件系統(tǒng)是運行在一組相同的節(jié)Map-Reduce框架由單獨一個masterJobTracker和每個集群節(jié)點一個slaveTaskTracker共同組成。這個master負(fù)責(zé)調(diào)度構(gòu)成一個作業(yè)的所有任務(wù),這些任務(wù)分布在不同的slave上,master監(jiān)控它們的執(zhí)行,重新執(zhí)行已經(jīng)失敗的任務(wù)。而slave僅負(fù)責(zé)執(zhí)行由master指派的任務(wù)。Map-Reduce框架由單獨一個masterJobTraMapReduce工作流程MapReduce來處理大數(shù)據(jù)集的過程,就是將大數(shù)據(jù)集分解為成百上千的小數(shù)據(jù)集,每個數(shù)據(jù)集分別由集群中的一個結(jié)點(可以一臺普通的計算機)進行處理并生成中間結(jié)果,然后這些中間結(jié)果又由大量的結(jié)點進行合并,形成最終結(jié)果。InputsplitshuffleoutputMapReduce工作流程MapReduce來處理大數(shù)據(jù)集的map任務(wù)處理:1.讀取輸入文件內(nèi)容,解析成鍵值對(key/value).對輸入文件的每一行,解析成鍵值對(key/value).每一個鍵值對調(diào)用一次map函數(shù)2.寫自己的邏輯,對輸入的鍵值對(key/value)處理,轉(zhuǎn)換成新的鍵值對(key/value)輸出3.對輸出的鍵值對(key/value)進行分區(qū)(partition)4.對不同分區(qū)的數(shù)據(jù),按照key進行排序,分組.相同的key/value放到一個集合中(shuffle)5.分組后的數(shù)據(jù)進行規(guī)約(combiner,可選擇的)Mapmap任務(wù)處理:MapReducereduce任務(wù)處理:1.對多個map任務(wù)的輸出,按照不同的分區(qū),通過網(wǎng)絡(luò)copy到不同的reduce節(jié)點.2.對多個map任務(wù)的輸出進行合并,排序.寫reduce函數(shù)自己的邏輯,對輸入的key/value處理,轉(zhuǎn)換成新的key/value輸出.3.把reduce的輸出保存到文件中(寫入到hdfs中).Reducereduce任務(wù)處理:ShuffleShuffle是將Map輸出進行進一步整理并交給reduce的過程在MapReduce流程中,為了讓reduce可以并行處理map結(jié)果,必須對map的輸出進行一定的排序和分割,然后再交給對應(yīng)的reduce。這個將map輸出進行進一步整理并交給reduce的過程,就稱為shuffleShuffle過程是MapReduce工作流程的核心,也被稱為奇跡發(fā)生的地方。要想理解MapReduce,Shuffle是必須要了解的Shuffle過程包含在map和reduce兩端中,描述著數(shù)據(jù)從maptask輸出到reducetask輸入的這段過程ShuffleShuffle是將Map輸出進行進一步整理并交CombinersCombiners的作用:每一個map可能會產(chǎn)生大量的輸出,combiner的作用就是在map端對輸出先做一次合并,以減少傳輸?shù)絩educer的數(shù)據(jù)量,1)combiner最基本是實現(xiàn)本地key的聚合,對map輸出的key排序,value進行迭代。如下所示:

map:(K1,V1)→list(K2,V2)

combine:(K2,list(V2))→list(K2,V2)

reduce:(K2,list(V2))→list(K3,V3)2)combiner還具有類似本地的reduce功能.

例如hadoop自帶的wordcount的例子和找出value的最大值的程序,combiner和reduce完全一致。如下所示:

map:(K1,V1)→list(K2,V2)

combine:(K2,list(V2))→list(K3,V3)

reduce:(K3,list(V3))→list(K4,V4)

3)如果不用combiner,那么,所有的結(jié)果都是reduce完成,效率會相對低下。使用combiner,先完成的map會在本地聚合,提升速度。

CombinersCombiners的作用:假設(shè)有兩個map第一個map的輸出為:(1950,0),(1950,20),(1950,10)第二個map輸出為:(1950,25),(1950,15),(1950,30)Reduce函數(shù)被調(diào)用是,輸入如下:(1950,[0,20,10,25,15,30])因為30是最大的值,所以輸出如下:(1950,30)假設(shè)有兩個map如果我們使用combiner,那么reduce調(diào)用的時候傳入的數(shù)據(jù)如下:(1950,[20,30])--(1950,30)用表達(dá)式表示為:Max(0,20,10,25,15,30)=max(max(0,20,10),max(25,15,30))=max(20,30)=30Combiners簡化了reduce端的工作量如果我們使用combiner,那么reduce調(diào)用的時候傳PatitionerPartitioner主要作用就是將map的結(jié)果發(fā)送到相應(yīng)的Reduce。這就對partition有兩個要求:1)均衡負(fù)載,盡量的將工作均勻的分配給不同的reduce。2)效率,分配速度一定要快。PatitionerPartitioner主要作用就是MapReduce示例:單詞計數(shù)為了統(tǒng)計論文中出現(xiàn)次數(shù)最多的幾個單詞,可以采用以下幾種方法:寫一個小程序,把所有論文按順序遍歷一遍,統(tǒng)計每一個遇到的單詞的出現(xiàn)次數(shù),最后就可以知道哪幾個單詞最熱門了(適合于數(shù)據(jù)集比較小,且非常有效的、實現(xiàn)最簡單)。(單機計算)寫一個多線程程序,并發(fā)遍歷論文。理論上是可以高度并發(fā)的,因為統(tǒng)計一個文件時不會影響統(tǒng)計另一個文件。使用多核機器時比方法一高效。但是,寫一個多線程程序要復(fù)雜得多。(并行計算)把作業(yè)交給多個計算機去完成??梢允褂梅椒ㄒ坏某绦颍渴鸬絅臺機器上去,然后把論文集分成N份,一臺機器跑一個作業(yè)。這個方法跑得足夠快,但是部署起來很麻煩,既要人工把論文集分開,復(fù)制到各臺機器,還把N個運行結(jié)果進行整合。(并發(fā)計算)4)使用MapReduce,同并發(fā)計算類似,但如何拆分文件集,如何復(fù)制分發(fā)程序,如何整合結(jié)果這些都是框架定義好的。我們只要定義好這個任務(wù)(用戶程序),其它都交給MapReduce。MapReduce示例:單詞計數(shù)為了統(tǒng)計論文中出現(xiàn)次數(shù)最多的處理過程分析每個拿到原始數(shù)據(jù)的機器只要將輸入數(shù)據(jù)切分成單詞就可以了,所以可以在map階段完成單詞切分的任務(wù)。相同單詞的頻數(shù)計算也可以并行化處理,可以將相同的單詞交給一臺機器來計算頻數(shù),然后輸出最終結(jié)果,這個過程可以交給reduce階段完成。至于將中間結(jié)果根據(jù)不同單詞分組再發(fā)送給reduce機器,這正好是MapReduce過程中的shuffle能夠完成的。處理過程分析每個拿到原始數(shù)據(jù)的機器只要將輸入數(shù)據(jù)切分成單詞就單詞統(tǒng)計的處理過程1.Map階段完成由輸入數(shù)據(jù)到單詞切分的工作。2.Shuffle階段完成相同單詞的聚集和分發(fā)工作(這個過程是MapReduce的默認(rèn)過程,不用具體配置)。3.Reduce階段完成接收所有單詞并計算其頻數(shù)的工作。單詞統(tǒng)計的處理過程1.Map階段完成由輸入數(shù)據(jù)到單詞切分的工MapReduce示例:單詞計數(shù)案例:單詞記數(shù)問題(WordCount)給定一個巨大的文本(如1TB),如何計算單詞出現(xiàn)的數(shù)目?MapReduce示例:單詞計數(shù)案例:單詞記數(shù)問題(WordMapReduce示例:單詞計數(shù)使用MapReduce求解該問題定義Map和Reduce函數(shù)MapReduce示例:單詞計數(shù)使用MapReduce求解該MapReduce示例:單詞計數(shù)使用MapReduce求解該問題Step1:自動對文本進行分割,形成初始的<key,value>對MapReduce示例:單詞計數(shù)使用MapReduce求解該MapReduce示例:單詞計數(shù)使用MapReduce求解該問題Step2:在分割之后的每一對<key,value>進行用戶定義的Map進行處理,再生成新的<key,value>對MapReduce示例:單詞計數(shù)使用MapReduce求解該MapReduce示例:單詞計數(shù)使用MapReduce求解該問題Step3:對輸出的結(jié)果集歸攏、排序(系統(tǒng)自動完成)shuffleMapReduce示例:單詞計數(shù)使用MapReduce求解該MapReduce示例:單詞計數(shù)使用MapReduce求解該問題Step4:通過Reduce操作生成最后結(jié)果MapReduce示例:單詞計數(shù)使用MapReduce求解該流程總攬流程總攬Map的數(shù)目通常是由輸入數(shù)據(jù)的大小決定的,一般就是所有輸入文件的總塊(block)數(shù)。Map正常的并行規(guī)模大致是每個節(jié)點(node)大約10到100個map,對于CPU消耗較小的map任務(wù)可以設(shè)到300個左右。由于每個任務(wù)初始化需要一定的時間,因此,比較合理的情況是map執(zhí)行的時間至少超過1分鐘。這樣,如果你輸入10TB的數(shù)據(jù),每個塊(block)的大小是128MB,你將需要大約82,000個map來完成任務(wù)Map的數(shù)目通常是由輸入數(shù)據(jù)的大小決定的,一般就是所有輸入文我們使用天氣的數(shù)據(jù)作為我們的示例,通常氣象站幾乎在每個小時,很多地點都在手機我們的氣溫信息,并采用日志的方式記錄下來,所以用MapReduce來分析這些數(shù)據(jù)是在合適不過了。

我們使用天氣的數(shù)據(jù)作為我們的示例,通常氣象站幾乎在每個小時,我們使用天氣的數(shù)據(jù)作為我們的示例,通常氣象站幾乎在每個小時,很多地點都在手機我們的氣溫信息,并采用日志的方式記錄下來,所以用MapReduce來分析這些數(shù)據(jù)是在合適不過了。

我們使用天氣的數(shù)據(jù)作為我們的示例,通常氣象站幾乎在每個小時,數(shù)據(jù)文件按照日期和氣象站的地點組織,目錄從1901到2001年按照年來分目錄,其中每個氣象站的數(shù)據(jù)按照gzip壓縮方式打包到一個文件中,下面這個例子列出累1990年的那個目錄信息。 %lsraw/1990|head,010010-99999-1990.gz

010014-99999-1990.gz,010015-99999-1990.gz

010016-99999-1990.gz,10017-99999-1990.gz

010030-99999-1990.gz,010040-99999-1990.gz

010080-99999-1990.gz,10100-99999-1990.gz

010150-99999-1990.gz,目前為止,已經(jīng)有成千上萬個氣象站,全部的數(shù)據(jù)將由一些相對來說比較小的文件組成,相對來說處理小文件比較容易。所以這就是為什么需要按照年份拆分成小文件。

數(shù)據(jù)文件按照日期和氣象站的地點組織,目錄從1901解析后的年份與溫度(0,11990999991950051507004...9999999N9+00001+9999..)(106,11990999991950051512004...9999999N9+00221+9999...)(212,11990999991950051518004...9999999N9-00111+99...)(318,2650999991949032412004...0500001N9+01111+99...)(424,12650999991949032418004...0500001N9+00781+99...)

解析后的年份與溫度Map函數(shù)僅僅從中解析出年份和溫度(數(shù)據(jù)中加粗的部分),然后將他們輸出[Key,value] (1950,0) (1950,22) (1950,?11) (1949,111) (1949,78)Map函數(shù)僅僅從中解析出年份和溫度(數(shù)據(jù)中加粗的部分),然后從map返回的output,在被送往reduce函數(shù)之前會被進行預(yù)處理。把key-value對進行排序和分組。所以接下來在reduce函數(shù)里看到的將是如下格式的輸入: (1949,[111,78]) (1950,[0,22,?11])從map返回的output,在被送往reduce函數(shù)之前會被每年的溫度數(shù)據(jù)在后面都可以通過后面的列表讀取,所有的reduce函數(shù)需要做的就是遍歷他然后找出最大的數(shù)據(jù)即可,最后結(jié)果如下。 (1949,111) (1950,22)最后輸出這種結(jié)果:每年的最高氣溫。每年的溫度數(shù)據(jù)在后面都可以通過后面的列表讀取,所有的r商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)GoogleMapReduce執(zhí)行流程GoogleMapReduce執(zhí)行流程文件存儲位置源文件:GFSMap處理結(jié)果:本地存儲Reduce處理結(jié)果:GFS日志:GFS文件存儲位置源文件:GFSMapReduce的用途MapReduce適合進行數(shù)據(jù)分析、日志分析、商業(yè)智能分析、客戶營銷、大規(guī)模索引等業(yè)務(wù),并具有非常明顯的效果。通過結(jié)合MapReduce技術(shù)進行實時分析,某家電公司的信用計算時間從33小時縮短到8秒,而MKI的基因分析時間從數(shù)天縮短到20分鐘。MapReduce的用途MapReduce適合進行數(shù)據(jù)分析、NoSQLNoSQL(NoSQL=NotOnlySQL),意即反SQL運動,指的是非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點得到了非常迅速的發(fā)展NoSQLNoSQL(NoSQL=NotOnlySQ關(guān)系數(shù)據(jù)庫暴露的問題Highperformance-對數(shù)據(jù)庫高并發(fā)讀寫的需求web2.0網(wǎng)站要根據(jù)用戶個性化信息來實時生成動態(tài)頁面和提供動態(tài)信息,所以基本上無法使用動態(tài)頁面靜態(tài)化技術(shù),因此數(shù)據(jù)庫并發(fā)負(fù)載非常高,往往要達(dá)到每秒上萬次讀寫請求。關(guān)系數(shù)據(jù)庫應(yīng)付上萬次SQL查詢還勉強頂?shù)米。菓?yīng)付上萬次SQL寫數(shù)據(jù)請求,硬盤IO就已經(jīng)無法承受了。其實對于普通的BBS網(wǎng)站,往往也存在對高并發(fā)寫請求的需求。關(guān)系數(shù)據(jù)庫暴露的問題Highperformance-對關(guān)系數(shù)據(jù)庫暴露的問題HugeStorage-對海量數(shù)據(jù)的高效率存儲和訪問的需求對于大型的SNS網(wǎng)站,每天用戶產(chǎn)生海量的用戶動態(tài),以國外的Friendfeed為例,一個月就達(dá)到了2.5億條用戶動態(tài),對于關(guān)系數(shù)據(jù)庫來說,在一張2.5億條記錄的表里面進行SQL查詢,效率是極其低下乃至不可忍受的。再例如大型web網(wǎng)站的用戶登錄系統(tǒng),例如騰訊,盛大,動輒數(shù)以億計的帳號,關(guān)系數(shù)據(jù)庫也很難應(yīng)付。關(guān)系數(shù)據(jù)庫暴露的問題HugeStorage-對海量數(shù)據(jù)關(guān)系數(shù)據(jù)庫暴露的問題HighScalability&&HighAvailability-對數(shù)據(jù)庫的高可擴展性和高可用性的需求在基于web的架構(gòu)當(dāng)中,數(shù)據(jù)庫是最難進行橫向擴展的,當(dāng)一個應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時候,你的數(shù)據(jù)庫卻沒有辦法像webserver和appserver那樣簡單的通過添加更多的硬件和服務(wù)節(jié)點來擴展性能和負(fù)載能力。對于很多需要提供24小時不間斷服務(wù)的網(wǎng)站來說,對數(shù)據(jù)庫系統(tǒng)進行升級和擴展是非常痛苦的事情,往往需要停機維護和數(shù)據(jù)遷移,為什么數(shù)據(jù)庫不能通過不斷的添加服務(wù)器節(jié)點來實現(xiàn)擴展呢?關(guān)系數(shù)據(jù)庫暴露的問題HighScalability&&關(guān)系數(shù)據(jù)庫無用武之地在上面提到的“三高”需求面前,關(guān)系數(shù)據(jù)庫遇到了難以克服的障礙,而對于web2.0網(wǎng)站來說,關(guān)系數(shù)據(jù)庫的很多主要特性卻往往無用武之地,如數(shù)據(jù)庫事務(wù)一致性需求數(shù)據(jù)庫的寫實時性和讀實時性需求對復(fù)雜的SQL查詢,特別是多表關(guān)聯(lián)查詢的需求關(guān)系數(shù)據(jù)庫無用武之地在上面提到的“三高”需求面前,關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫無用武之地數(shù)據(jù)庫事務(wù)一致性需求很多web實時系統(tǒng)并不要求嚴(yán)格的數(shù)據(jù)庫事務(wù),對讀一致性的要求很低,有些場合對寫一致性要求也不高。因此數(shù)據(jù)庫事務(wù)管理成了數(shù)據(jù)庫高負(fù)載下一個沉重的負(fù)擔(dān)。關(guān)系數(shù)據(jù)庫無用武之地數(shù)據(jù)庫事務(wù)一致性需求關(guān)系數(shù)據(jù)庫無用武之地數(shù)據(jù)庫的寫實時性和讀實時性需求對關(guān)系數(shù)據(jù)庫來說,插入一條數(shù)據(jù)之后立刻查詢,是肯定可以讀出來這條數(shù)據(jù)的,但是對于很多web應(yīng)用來說,并不要求這么高的實時性。關(guān)系數(shù)據(jù)庫無用武之地數(shù)據(jù)庫的寫實時性和讀實時性需求關(guān)系數(shù)據(jù)庫無用武之地對復(fù)雜的SQL查詢,特別是多表關(guān)聯(lián)查詢的需求任何大數(shù)據(jù)量的web系統(tǒng),都非常忌諱多個大表的關(guān)聯(lián)查詢,以及復(fù)雜的數(shù)據(jù)分析類型的復(fù)雜SQL報表查詢,特別是SNS類型的網(wǎng)站,從需求以及產(chǎn)品設(shè)計角度,就避免了這種情況的產(chǎn)生。往往更多的只是單表的主鍵查詢,以及單表的簡單條件分頁查詢,SQL的功能被極大的弱化了關(guān)系數(shù)據(jù)庫無用武之地對復(fù)雜的SQL查詢,特別是多表關(guān)聯(lián)查詢的NoSQLNoSQL是非關(guān)系型數(shù)據(jù)存儲的廣義定義。它打破了長久以來關(guān)系型數(shù)據(jù)庫與ACID理論大一統(tǒng)的局面。NoSQL數(shù)據(jù)存儲不需要固定的表結(jié)構(gòu),通常也不存在連接操作。在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。該術(shù)語在2009年初得到了廣泛認(rèn)同NoSQLNoSQL是非關(guān)系型數(shù)據(jù)存儲的廣義定義。它打破了NoSQL與關(guān)系型數(shù)據(jù)庫設(shè)計理念比較關(guān)系型數(shù)據(jù)庫中的表都是存儲一些格式化的數(shù)據(jù)結(jié)構(gòu),每個元組字段的組成都一樣,即使不是每個元組都需要所有的字段,但數(shù)據(jù)庫會為每個元組分配所有的字段,這樣的結(jié)構(gòu)可以便于表與表之間進行連接等操作,但從另一個角度來說它也是關(guān)系型數(shù)據(jù)庫性能瓶頸的一個因素。而非關(guān)系型數(shù)據(jù)庫以鍵值對存儲,它的結(jié)構(gòu)不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時間和空間的開銷。NoSQL與關(guān)系型數(shù)據(jù)庫設(shè)計理念比較關(guān)系型數(shù)據(jù)庫中的表都是存NoSQL實例Google的BigTable與Amazon的Dynamo是非常成功的商業(yè)NoSQL實現(xiàn)。一些開源的NoSQL體系,如Facebook的Cassandra,Apache的HBase,也得到了廣泛認(rèn)同NoSQL實例Google的BigTable與Amazon商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)MembaseMembase是NoSQL家族的一個新的重量級的成員。Membase是開源項目,源代碼采用了Apache2.0的使用許可。該項目托管在GitHub.Sourcetarballs上,目前可以下載beta版本的Linux二進制包。MembaseMembase是NoSQL家族的一個新的MongoDBMongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。它的特點是高性能、易部署、易使用,存儲數(shù)據(jù)非常方便MongoDBMongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)MongoDB文件存儲格式為BSON(一種JSON的擴展)BSON(BinarySerializeddOcumentFormat)存儲形式是指:存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用于唯一標(biāo)識一個文檔,為字符串類型,而值則可以是各中復(fù)雜的文件類型MongoDB文件存儲格式為BSON(一種JSON的擴展)MongoDB可通過網(wǎng)絡(luò)訪問MongoDB服務(wù)端可運行在Linux、Windows或OSX平臺,支持32位和64位應(yīng)用,默認(rèn)端口為27017。推薦運行在64位平臺,因為MongoDB在32位模式運行時支持的最大文件尺寸為2GBMongoDB可通過網(wǎng)絡(luò)訪問HypertableHypertable是一個開源、高性能、可伸縮的數(shù)據(jù)庫,它采用與Google的Bigtable相似的模型。Google的三個關(guān)鍵組件GoogleFileSystem(GFS),這是一個高可用的文件系統(tǒng)Map-Reduce的計算框架,它與GFS緊密協(xié)作,幫助處理收集到的海量數(shù)據(jù)Bigtable,它是傳統(tǒng)數(shù)據(jù)庫的替代Hypertable是Bigtable的一個開源實現(xiàn)HypertableHypertable是一個開源、高性能、HadoopHDFS(HadoopDistributedFileSystem)是GoogleFileSystem(GFS)的開源實現(xiàn)。MapReduce是GoogleMapReduce的開源實現(xiàn)。HBase是GoogleBigTable的開源實現(xiàn)HadoopHDFS(HadoopDistributedApacheCassandraApacheCassandra是一套開源分布式Key-Value存儲系統(tǒng)。它最初由Facebook開發(fā),用于儲存特別大的數(shù)據(jù)。Facebook目前在使用此系統(tǒng)Cassandra的主要特點就是它不是一個數(shù)據(jù)庫,而是由一堆數(shù)據(jù)庫節(jié)點共同構(gòu)成的一個分布式網(wǎng)絡(luò)服務(wù),對Cassandra的一個寫操作,會被復(fù)制到其他節(jié)點上去,對Cassandra的讀操作,也會被路由到某個節(jié)點上面去讀取。對于一個Cassandra群集來說,擴展性能是比較簡單的事情,只管在群集里面添加節(jié)點就可以了ApacheCassandraApacheCassand大數(shù)據(jù)技術(shù)概述大數(shù)據(jù)技術(shù)概述大數(shù)據(jù)技術(shù)的概念與現(xiàn)狀2011年,中國互聯(lián)網(wǎng)行業(yè)持有數(shù)據(jù)總量達(dá)到1.9EB(1EB字節(jié)相當(dāng)于10億GB)2013年,我們生成這樣規(guī)模的信息量只需10分鐘2015年,全球被創(chuàng)建和復(fù)制的數(shù)據(jù)總量將增長到8.2EB以上2020年,全球電子設(shè)備存儲的數(shù)據(jù)將暴增30倍,達(dá)到35ZB?從數(shù)據(jù)的生成到消耗,時間窗口非常小,可用于生成決策的時間非常少大數(shù)據(jù)技術(shù)的概念與現(xiàn)狀2011年,中國互聯(lián)網(wǎng)行業(yè)持有數(shù)據(jù)總量每秒鐘發(fā)送290萬封電子郵件每分鐘向youtube上傳60個小時的視頻每天在微信上長傳1億條信息淘寶網(wǎng)的日成交量是2000億元每秒鐘發(fā)送290萬封電子郵件大數(shù)據(jù)包含大量的半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)10%的結(jié)構(gòu)化數(shù)據(jù),存儲在數(shù)據(jù)庫中90%的非結(jié)構(gòu)化數(shù)據(jù),它們與人類信息密切相關(guān)非結(jié)構(gòu)化數(shù)據(jù)類型多樣郵件、視頻、微博位置信息、鏈接信息手機呼叫、網(wǎng)頁點擊大數(shù)據(jù)包含大量的半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)

池塘捕魚(數(shù)據(jù)庫)vs.大海捕魚(大數(shù)據(jù))

數(shù)據(jù)規(guī)模:“池塘”的處理對象通常以MB為基本單位,而“大?!眲t常常以GB,甚至是TB、PB為基本處理單位。數(shù)據(jù)類型:“池塘”中數(shù)據(jù)的種類單一,往往僅僅有一種或少數(shù)幾種,這些數(shù)據(jù)又以結(jié)構(gòu)化數(shù)據(jù)為主?!按蠛!敝袛?shù)據(jù)的種類繁多,數(shù)以千計,而這些數(shù)據(jù)又包含著結(jié)構(gòu)化、半結(jié)構(gòu)化以及非結(jié)構(gòu)化的數(shù)據(jù),并且半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)所占份額越來越大。模式和數(shù)據(jù)的關(guān)系:傳統(tǒng)的數(shù)據(jù)庫先有模式,然后才會產(chǎn)生數(shù)據(jù)。這就好比是先選好合適的“池塘”,然后才會向其中投放適合在該“池塘”環(huán)境生長的“魚”。大數(shù)據(jù)難以預(yù)先確定模式,模式只有在數(shù)據(jù)出現(xiàn)之后才能確定,且模式隨著數(shù)據(jù)量的增長處于不斷的演變之中。

池塘捕魚(數(shù)據(jù)庫)vs.大海捕魚(大數(shù)據(jù))

數(shù)據(jù)規(guī)處理對象:傳統(tǒng)數(shù)據(jù)庫中數(shù)據(jù)僅作為處理對象。而在大數(shù)據(jù)時代,要將數(shù)據(jù)作為一種資源來輔助解決其他諸多領(lǐng)域的問題。處理工具:捕撈“池塘”中的“魚”,一種漁網(wǎng)或少數(shù)幾種基本就可以應(yīng)對。但是在“大?!敝校豢赡艽嬖谝环N漁網(wǎng)能夠捕獲所有的魚類處理對象:處理技術(shù)大數(shù)據(jù)時代對數(shù)據(jù)處理的實時性、有效性提出了更高要求,傳統(tǒng)的常規(guī)技術(shù)手段根本無法應(yīng)付。大數(shù)據(jù)時代使用的新技術(shù),主要包括分布式緩存、分布式數(shù)據(jù)庫、分布式文件系統(tǒng)、各種NoSQL分布式存儲方案、分布式計算系統(tǒng)等。處理技術(shù)大數(shù)據(jù)處理的基本流程大數(shù)據(jù)處理的基本流程為數(shù)據(jù)的抽取和集成、數(shù)據(jù)分析以及數(shù)據(jù)解釋。即在合適工具的輔助下,對廣泛異構(gòu)的數(shù)據(jù)源進行抽取和集成,結(jié)果按照一定的標(biāo)準(zhǔn)進行統(tǒng)一存儲,并利用合適的數(shù)據(jù)分析技術(shù)對存儲的數(shù)據(jù)進行分析,從中提取有益的知識并利用恰當(dāng)?shù)姆绞綄⒔Y(jié)果展現(xiàn)給終端用戶。大數(shù)據(jù)處理的基本流程大數(shù)據(jù)處理的基本流程為數(shù)據(jù)的抽取和集成、數(shù)據(jù)處理方式流處理流處理的處理模式將數(shù)據(jù)視為流,源源不斷的數(shù)據(jù)組成了數(shù)據(jù)流。當(dāng)新的數(shù)據(jù)到來時就立刻處理并返回所需的結(jié)果。批處理批處理是指用戶將一批作業(yè)提交給處理系統(tǒng)后就不再干預(yù),由操作系統(tǒng)控制它們自動運行。數(shù)據(jù)處理方式流處理大數(shù)據(jù)處理要求分布式計算分布式計算是指運行在多個處理單元上的任務(wù)合作求解一個規(guī)模很大的計算問題這些處理單元可與相互通信和協(xié)作以快速、高效求解大型復(fù)雜問題。并行計算可以微秒為單位處理大規(guī)模數(shù)據(jù),比如天氣預(yù)報,股票數(shù)據(jù)分析等。大數(shù)據(jù)處理要求分布式計算大規(guī)模集群并行分布式計算的不足在多臺機器上對分布式數(shù)據(jù)進行分析會產(chǎn)生巨大的性能開銷,即使采用千兆比特或萬兆比特帶寬的網(wǎng)絡(luò),隨機讀取速度和連續(xù)讀取速度都會比內(nèi)存慢幾個數(shù)量級?,F(xiàn)在高速局域網(wǎng)技術(shù)使得網(wǎng)絡(luò)讀取速度比硬盤讀取要快很多。因此,將數(shù)據(jù)存儲在其他節(jié)點上比存儲在硬盤上的性能要好,而且還可以在多個節(jié)點上并行處理數(shù)據(jù)集大規(guī)模集群并行分布式計算的不足分布式系統(tǒng)可靠性也是一個大問題,一個擁有10個節(jié)點的集群很容易出現(xiàn)節(jié)點故障。這可以通過在節(jié)點間復(fù)制數(shù)據(jù)來解決,對數(shù)據(jù)進行復(fù)制,既可以提高數(shù)據(jù)分析的效率,也可以通過冗余來應(yīng)對節(jié)點故障。當(dāng)然,數(shù)據(jù)集越大,對數(shù)據(jù)副本的管理和維護也越困難。一些數(shù)據(jù)分析軟件,比如SAS、SPSS等因其數(shù)據(jù)處理能力受限于單機的計算能力,對大數(shù)據(jù)的處理顯得力不從心分布式系統(tǒng)可靠性也是一個大問題,一個擁有10個節(jié)點的集群很容基本的大數(shù)據(jù)處理技術(shù)HadoopMapReduceHDFSNoSql基本的大數(shù)據(jù)處理技術(shù)HadoopHadoop概述Hadoop是一個開源的可運行于大規(guī)模集群上的分布式并行編程框架,它實現(xiàn)了Map/Reduce計算模型。Hadoop能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理,并且是以一種可靠、高效、可伸縮的方式進行處理的借助于Hadoop,程序員可以輕松地編寫分布式并行程序,將其運行于計算機集群上,完成海量數(shù)據(jù)的計算。Hadoop概述Hadoop是一個開源的可運行于大規(guī)模集群上2008年4月,Hadoop打破世界紀(jì)錄,成為最快排序1TB數(shù)據(jù)的系統(tǒng)。運行在一個910節(jié)點的群集,Hadoop在209秒內(nèi)排序了1TB的數(shù)據(jù),擊敗了前一年的297秒冠軍。11月,谷歌在報告中生成,它的MapReduce實現(xiàn)執(zhí)行1TB數(shù)據(jù)的排序只用了68秒。2009年5月,Yahoo的團隊使用Hadoop對1TB的數(shù)據(jù)進行排序只花了62秒時間。2008年4月,Hadoop打破世界紀(jì)錄,成為最快排序1TBHadoop的特點Hadoop采用了分布式存儲方式,提高了讀寫速度,并擴大了存儲容量。采用MapReduce來整合分布式文件系統(tǒng)上的數(shù)據(jù),可保證分析和處理數(shù)據(jù)的高效。得Hadoop可以部署在低廉的計算機集群中,同時不限于某個操作系統(tǒng)。Hadoop的特點Hadoop采用了分布式存儲方式,提高了讀Hadoop框架應(yīng)用舉例求20個數(shù)據(jù)中的最大數(shù),一般的編程方式把第一個數(shù)據(jù)開始往后面一個個的比較,總是把更大的數(shù)據(jù)記錄下來,這樣順序比較下去,最后就得到了最大的數(shù)據(jù);但是Hadoop的做法是把這20個數(shù)據(jù)分成4組,每組5個數(shù)據(jù),每組采用Map函數(shù)求出最大值,然后后每組把求得的各自最大值交給Reduce,由Reduce得出最后的最大值;Hadoop框架應(yīng)用舉例求20個數(shù)據(jù)中的最大數(shù),一般的編程方Hadoop框架的體系結(jié)構(gòu)HDFS和MapReduce是Hadoop的兩大核心。HDFS在集群上實現(xiàn)了分布式文件系統(tǒng),MapReduce在集群上實現(xiàn)了分布式計算和任務(wù)處理。HDFS在MapReduce任務(wù)處理過程中提供了文件操作和存儲等支持,MapReduce在HDFS的基礎(chǔ)上實現(xiàn)了任務(wù)的分發(fā)、跟蹤、執(zhí)行等工作,并收集結(jié)果,二者相互作用,完成了Hadoop分布式集群的主要任務(wù)。Hadoop框架的體系結(jié)構(gòu)HDFS和MapReduce是HaHadoop的優(yōu)勢數(shù)據(jù)存儲在哪一臺計算機上,就由這臺計算機進行這部分?jǐn)?shù)據(jù)的計算,這樣可以減少數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸,降低對網(wǎng)絡(luò)帶寬的需求。在Hadoop這樣的基于集群的分布式并行系統(tǒng)中,計算結(jié)點可以很方便地擴充,而因它所能夠提供的計算能力近乎是無限的,但是由是數(shù)據(jù)需要在不同的計算機之間流動,故網(wǎng)絡(luò)帶寬變成了瓶頸,是非常寶貴的,“本地計算”是最有效的一種節(jié)約網(wǎng)絡(luò)帶寬的手段,業(yè)界把這形容為“移動計算比移動數(shù)據(jù)更經(jīng)濟”。Hadoop的優(yōu)勢數(shù)據(jù)存儲在哪一臺計算機上,就由這臺計算機進MapReduce概述MapReduce是一個簡單易用的軟件框架,基于它可以將任務(wù)分發(fā)到由上千臺商用機器組成的集群上,并以一種高容錯的方式并行處理大量的數(shù)據(jù)集,實現(xiàn)Hadoop的并行任務(wù)處理功能。MapReduce是一種并行編程模式,這種模式使得軟件開發(fā)者可以輕松地編寫出分布式并行程序。MapReduce概述MapReduce是一個簡單易用的軟件MapReduce包括Map(映射)和Reduce(化簡)兩個階段,可以進行海量數(shù)據(jù)分割、任務(wù)分解與結(jié)果匯總,從而完成海量數(shù)據(jù)的并行處理。適合用MapReduce來處理的數(shù)據(jù)集,需要可以分解成許多小的數(shù)據(jù)集,而且每一個小數(shù)據(jù)集都可以完全并行地進行處理。MapReduce極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統(tǒng)上。MapReduce包括Map(映射)和Reduce(化簡)兩MapReduce的優(yōu)點MapReduce將傳統(tǒng)的查詢、分解及數(shù)據(jù)分析進行分布式處理,將處理任務(wù)分配到不同的處理節(jié)點,因此具有更強的并行處理能力。作為一個簡化的并行處理的編程模型,MapReduce還降低了開發(fā)并行應(yīng)用的門檻。MapReduce的優(yōu)點MapReduce將傳統(tǒng)的查詢、分解商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)MapReduce工作原理MapReduce的工作原理其實是先分后合的數(shù)據(jù)處理方式。Map即“分解”,把海量數(shù)據(jù)分割成了若干部分,分給多臺處理器并行處理;Reduce即“合并”,把各臺處理器處理后的結(jié)果進行匯總操作以得到最終結(jié)果。MapReduce工作原理MapReduce的工作原理其實利用一個輸入的key/value對集合來產(chǎn)生一個輸出的key/value對集合。MapReduce用兩個函數(shù)來表達(dá)這個計算:Map和Reduce。用戶自定義的map函數(shù)接收一個輸入的key/value對,然后產(chǎn)生一個中間key/value對的集合。MapReduce把所有具有相同key值的value集合在一起,然后傳遞給reduce函數(shù)。用戶自定義的reduce函數(shù)接收key和相關(guān)的value集合。reduce函數(shù)合并這些value值,形成一個較小的value集合。用戶只需要編寫map和reduce函數(shù),而如何分配調(diào)用資源,則交給Hadoop去做。利用一個輸入的key/value對集合來產(chǎn)生一個輸出的ke如果采用MapReduce來統(tǒng)計不同幾何形狀的數(shù)量,它會先把任務(wù)分配到兩個節(jié)點,由兩個節(jié)點分別并行統(tǒng)計,然后再把它們的結(jié)果匯總,得到最終的計算結(jié)果。如果采用MapReduce來統(tǒng)計不同幾何形狀的數(shù)量,它會先把商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)一個Map-Reduce作業(yè)(job)通常會把輸入的數(shù)據(jù)集切分為若干獨立的數(shù)據(jù)塊,由map任務(wù)(task)以完全并行的方式處理它們??蚣軙ap的輸出先進行排序,然后把結(jié)果輸入給reduce任務(wù)。通常作業(yè)的輸入和輸出都會被存儲在文件系統(tǒng)中。整個框架負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控,以及重新執(zhí)行已經(jīng)失敗的任務(wù)。一個Map-Reduce作業(yè)(job)通常會把輸入的數(shù)據(jù)集切Map-Reduce框架和分布式文件系統(tǒng)是運行在一組相同的節(jié)點上的,即計算節(jié)點和存儲節(jié)點通常在一起。這種配置允許框架在那些已經(jīng)存好數(shù)據(jù)的節(jié)點上高效地調(diào)度任務(wù),這可以使整個集群的網(wǎng)絡(luò)帶寬被非常高效地利用。Map-Reduce框架和分布式文件系統(tǒng)是運行在一組相同的節(jié)Map-Reduce框架由單獨一個masterJobTracker和每個集群節(jié)點一個slaveTaskTracker共同組成。這個master負(fù)責(zé)調(diào)度構(gòu)成一個作業(yè)的所有任務(wù),這些任務(wù)分布在不同的slave上,master監(jiān)控它們的執(zhí)行,重新執(zhí)行已經(jīng)失敗的任務(wù)。而slave僅負(fù)責(zé)執(zhí)行由master指派的任務(wù)。Map-Reduce框架由單獨一個masterJobTraMapReduce工作流程MapReduce來處理大數(shù)據(jù)集的過程,就是將大數(shù)據(jù)集分解為成百上千的小數(shù)據(jù)集,每個數(shù)據(jù)集分別由集群中的一個結(jié)點(可以一臺普通的計算機)進行處理并生成中間結(jié)果,然后這些中間結(jié)果又由大量的結(jié)點進行合并,形成最終結(jié)果。InputsplitshuffleoutputMapReduce工作流程MapReduce來處理大數(shù)據(jù)集的map任務(wù)處理:1.讀取輸入文件內(nèi)容,解析成鍵值對(key/value).對輸入文件的每一行,解析成鍵值對(key/value).每一個鍵值對調(diào)用一次map函數(shù)2.寫自己的邏輯,對輸入的鍵值對(key/value)處理,轉(zhuǎn)換成新的鍵值對(key/value)輸出3.對輸出的鍵值對(key/value)進行分區(qū)(partition)4.對不同分區(qū)的數(shù)據(jù),按照key進行排序,分組.相同的key/value放到一個集合中(shuffle)5.分組后的數(shù)據(jù)進行規(guī)約(combiner,可選擇的)Mapmap任務(wù)處理:MapReducereduce任務(wù)處理:1.對多個map任務(wù)的輸出,按照不同的分區(qū),通過網(wǎng)絡(luò)copy到不同的reduce節(jié)點.2.對多個map任務(wù)的輸出進行合并,排序.寫reduce函數(shù)自己的邏輯,對輸入的key/value處理,轉(zhuǎn)換成新的key/value輸出.3.把reduce的輸出保存到文件中(寫入到hdfs中).Reducereduce任務(wù)處理:ShuffleShuffle是將Map輸出進行進一步整理并交給reduce的過程在MapReduce流程中,為了讓reduce可以并行處理map結(jié)果,必須對map的輸出進行一定的排序和分割,然后再交給對應(yīng)的reduce。這個將map輸出進行進一步整理并交給reduce的過程,就稱為shuffleShuffle過程是MapReduce工作流程的核心,也被稱為奇跡發(fā)生的地方。要想理解MapReduce,Shuffle是必須要了解的Shuffle過程包含在map和reduce兩端中,描述著數(shù)據(jù)從maptask輸出到reducetask輸入的這段過程ShuffleShuffle是將Map輸出進行進一步整理并交CombinersCombiners的作用:每一個map可能會產(chǎn)生大量的輸出,combiner的作用就是在map端對輸出先做一次合并,以減少傳輸?shù)絩educer的數(shù)據(jù)量,1)combiner最基本是實現(xiàn)本地key的聚合,對map輸出的key排序,value進行迭代。如下所示:

map:(K1,V1)→list(K2,V2)

combine:(K2,list(V2))→list(K2,V2)

reduce:(K2,list(V2))→list(K3,V3)2)combiner還具有類似本地的reduce功能.

例如hadoop自帶的wordcount的例子和找出value的最大值的程序,combiner和reduce完全一致。如下所示:

map:(K1,V1)→list(K2,V2)

combine:(K2,list(V2))→list(K3,V3)

reduce:(K3,list(V3))→list(K4,V4)

3)如果不用combiner,那么,所有的結(jié)果都是reduce完成,效率會相對低下。使用combiner,先完成的map會在本地聚合,提升速度。

CombinersCombiners的作用:假設(shè)有兩個map第一個map的輸出為:(1950,0),(1950,20),(1950,10)第二個map輸出為:(1950,25),(1950,15),(1950,30)Reduce函數(shù)被調(diào)用是,輸入如下:(1950,[0,20,10,25,15,30])因為30是最大的值,所以輸出如下:(1950,30)假設(shè)有兩個map如果我們使用combiner,那么reduce調(diào)用的時候傳入的數(shù)據(jù)如下:(1950,[20,30])--(1950,30)用表達(dá)式表示為:Max(0,20,10,25,15,30)=max(max(0,20,10),max(25,15,30))=max(20,30)=30Combiners簡化了reduce端的工作量如果我們使用combiner,那么reduce調(diào)用的時候傳PatitionerPartitioner主要作用就是將map的結(jié)果發(fā)送到相應(yīng)的Reduce。這就對partition有兩個要求:1)均衡負(fù)載,盡量的將工作均勻的分配給不同的reduce。2)效率,分配速度一定要快。PatitionerPartitioner主要作用就是MapReduce示例:單詞計數(shù)為了統(tǒng)計論文中出現(xiàn)次數(shù)最多的幾個單詞,可以采用以下幾種方法:寫一個小程序,把所有論文按順序遍歷一遍,統(tǒng)計每一個遇到的單詞的出現(xiàn)次數(shù),最后就可以知道哪幾個單詞最熱門了(適合于數(shù)據(jù)集比較小,且非常有效的、實現(xiàn)最簡單)。(單機計算)寫一個多線程程序,并發(fā)遍歷論文。理論上是可以高度并發(fā)的,因為統(tǒng)計一個文件時不會影響統(tǒng)計另一個文件。使用多核機器時比方法一高效。但是,寫一個多線程程序要復(fù)雜得多。(并行計算)把作業(yè)交給多個計算機去完成??梢允褂梅椒ㄒ坏某绦颍渴鸬絅臺機器上去,然后把論文集分成N份,一臺機器跑一個作業(yè)。這個方法跑得足夠快,但是部署起來很麻煩,既要人工把論文集分開,復(fù)制到各臺機器,還把N個運行結(jié)果進行整合。(并發(fā)計算)4)使用MapReduce,同并發(fā)計算類似,但如何拆分文件集,如何復(fù)制分發(fā)程序,如何整合結(jié)果這些都是框架定義好的。我們只要定義好這個任務(wù)(用戶程序),其它都交給MapReduce。MapReduce示例:單詞計數(shù)為了統(tǒng)計論文中出現(xiàn)次數(shù)最多的處理過程分析每個拿到原始數(shù)據(jù)的機器只要將輸入數(shù)據(jù)切分成單詞就可以了,所以可以在map階段完成單詞切分的任務(wù)。相同單詞的頻數(shù)計算也可以并行化處理,可以將相同的單詞交給一臺機器來計算頻數(shù),然后輸出最終結(jié)果,這個過程可以交給reduce階段完成。至于將中間結(jié)果根據(jù)不同單詞分組再發(fā)送給reduce機器,這正好是MapReduce過程中的shuffle能夠完成的。處理過程分析每個拿到原始數(shù)據(jù)的機器只要將輸入數(shù)據(jù)切分成單詞就單詞統(tǒng)計的處理過程1.Map階段完成由輸入數(shù)據(jù)到單詞切分的工作。2.Shuffle階段完成相同單詞的聚集和分發(fā)工作(這個過程是MapReduce的默認(rèn)過程,不用具體配置)。3.Reduce階段完成接收所有單詞并計算其頻數(shù)的工作。單詞統(tǒng)計的處理過程1.Map階段完成由輸入數(shù)據(jù)到單詞切分的工MapReduce示例:單詞計數(shù)案例:單詞記數(shù)問題(WordCount)給定一個巨大的文本(如1TB),如何計算單詞出現(xiàn)的數(shù)目?MapReduce示例:單詞計數(shù)案例:單詞記數(shù)問題(WordMapReduce示例:單詞計數(shù)使用MapReduce求解該問題定義Map和Reduce函數(shù)MapReduce示例:單詞計數(shù)使用MapReduce求解該MapReduce示例:單詞計數(shù)使用MapReduce求解該問題Step1:自動對文本進行分割,形成初始的<key,value>對MapReduce示例:單詞計數(shù)使用MapReduce求解該MapReduce示例:單詞計數(shù)使用MapReduce求解該問題Step2:在分割之后的每一對<key,value>進行用戶定義的Map進行處理,再生成新的<key,value>對MapReduce示例:單詞計數(shù)使用MapReduce求解該MapReduce示例:單詞計數(shù)使用MapReduce求解該問題Step3:對輸出的結(jié)果集歸攏、排序(系統(tǒng)自動完成)shuffleMapReduce示例:單詞計數(shù)使用MapReduce求解該MapReduce示例:單詞計數(shù)使用MapReduce求解該問題Step4:通過Reduce操作生成最后結(jié)果MapReduce示例:單詞計數(shù)使用MapReduce求解該流程總攬流程總攬Map的數(shù)目通常是由輸入數(shù)據(jù)的大小決定的,一般就是所有輸入文件的總塊(block)數(shù)。Map正常的并行規(guī)模大致是每個節(jié)點(node)大約10到100個map,對于CPU消耗較小的map任務(wù)可以設(shè)到300個左右。由于每個任務(wù)初始化需要一定的時間,因此,比較合理的情況是map執(zhí)行的時間至少超過1分鐘。這樣,如果你輸入10TB的數(shù)據(jù),每個塊(block)的大小是128MB,你將需要大約82,000個map來完成任務(wù)Map的數(shù)目通常是由輸入數(shù)據(jù)的大小決定的,一般就是所有輸入文我們使用天氣的數(shù)據(jù)作為我們的示例,通常氣象站幾乎在每個小時,很多地點都在手機我們的氣溫信息,并采用日志的方式記錄下來,所以用MapReduce來分析這些數(shù)據(jù)是在合適不過了。

我們使用天氣的數(shù)據(jù)作為我們的示例,通常氣象站幾乎在每個小時,我們使用天氣的數(shù)據(jù)作為我們的示例,通常氣象站幾乎在每個小時,很多地點都在手機我們的氣溫信息,并采用日志的方式記錄下來,所以用MapReduce來分析這些數(shù)據(jù)是在合適不過了。

我們使用天氣的數(shù)據(jù)作為我們的示例,通常氣象站幾乎在每個小時,數(shù)據(jù)文件按照日期和氣象站的地點組織,目錄從1901到2001年按照年來分目錄,其中每個氣象站的數(shù)據(jù)按照gzip壓縮方式打包到一個文件中,下面這個例子列出累1990年的那個目錄信息。 %lsraw/1990|head,010010-99999-1990.gz

010014-99999-1990.gz,010015-99999-1990.gz

010016-99999-1990.gz,10017-99999-1990.gz

010030-99999-1990.gz,010040-99999-1990.gz

010080-99999-1990.gz,10100-99999-1990.gz

010150-99999-1990.gz,目前為止,已經(jīng)有成千上萬個氣象站,全部的數(shù)據(jù)將由一些相對來說比較小的文件組成,相對來說處理小文件比較容易。所以這就是為什么需要按照年份拆分成小文件。

數(shù)據(jù)文件按照日期和氣象站的地點組織,目錄從1901解析后的年份與溫度(0,11990999991950051507004...9999999N9+00001+9999..)(106,11990999991950051512004...9999999N9+00221+9999...)(212,11990999991950051518004...9999999N9-00111+99...)(318,2650999991949032412004...0500001N9+01111+99...)(424,12650999991949032418004...0500001N9+00781+99...)

解析后的年份與溫度Map函數(shù)僅僅從中解析出年份和溫度(數(shù)據(jù)中加粗的部分),然后將他們輸出[Key,value] (1950,0) (1950,22) (1950,?11) (1949,111) (1949,78)Map函數(shù)僅僅從中解析出年份和溫度(數(shù)據(jù)中加粗的部分),然后從map返回的output,在被送往reduce函數(shù)之前會被進行預(yù)處理。把key-value對進行排序和分組。所以接下來在reduce函數(shù)里看到的將是如下格式的輸入: (1949,[111,78]) (1950,[0,22,?11])從map返回的output,在被送往reduce函數(shù)之前會被每年的溫度數(shù)據(jù)在后面都可以通過后面的列表讀取,所有的reduce函數(shù)需要做的就是遍歷他然后找出最大的數(shù)據(jù)即可,最后結(jié)果如下。 (1949,111) (1950,22)最后輸出這種結(jié)果:每年的最高氣溫。每年的溫度數(shù)據(jù)在后面都可以通過后面的列表讀取,所有的r商務(wù)智能理論與應(yīng)用10-大數(shù)據(jù)技術(shù)架構(gòu)GoogleMapReduce執(zhí)行流程GoogleMapReduce執(zhí)行流程文件存儲位置源文件:GFSMap處理結(jié)果:本地存儲Reduce處理結(jié)果:GFS日志:GFS文件存儲位置源文件:GFSMapReduce的用途MapReduce適合進行數(shù)據(jù)分析、日志分析、商業(yè)智能分析、客戶營銷、大規(guī)模索引等業(yè)務(wù),并具有非常明顯的效果。通過結(jié)合MapReduce技術(shù)進行實時分析,某家電公司的信用計算時間從33小時縮短到8秒,而MKI的基因分析時間從數(shù)天縮短到20分鐘。MapReduce的用途MapReduce適合進行數(shù)據(jù)分析、NoSQLNoSQL(NoSQL=NotOnlySQL),意即反SQL運動,指的是非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點得到了非常迅速的發(fā)展NoSQLNoSQL(NoSQL=NotOnlySQ關(guān)系數(shù)據(jù)庫暴露的問題Highperformance-對數(shù)據(jù)庫高并發(fā)讀寫的需求web2.0網(wǎng)站要根據(jù)用戶個性化信息來實時生成動態(tài)頁面和提供動態(tài)信息,所以基本上無法使用動態(tài)頁面靜態(tài)化技術(shù),因此數(shù)據(jù)庫并發(fā)負(fù)載非常高,往往要達(dá)到每秒上萬次讀寫請求。關(guān)系數(shù)據(jù)庫應(yīng)付上萬次SQL查詢還勉強頂?shù)米?,但是?yīng)付上萬次SQL寫數(shù)據(jù)請求,硬盤IO就已經(jīng)無法承受了。其實對于普通的BBS網(wǎng)站,往往也存在對高并發(fā)寫請求的需求。關(guān)系數(shù)據(jù)庫暴露的問題Highperformance-對關(guān)系數(shù)據(jù)庫暴露的問題HugeStorage-對海量數(shù)據(jù)的高效率存儲和訪問的需求對于大型的SNS網(wǎng)站,每天用戶產(chǎn)生海量的用戶動態(tài),以國外的Friendfeed為例,一個月就達(dá)到了2.5億條用戶動態(tài),對于關(guān)系數(shù)據(jù)庫來說,在一張2.5億條記錄的表里面進行SQL查詢,效率是極其低下乃至不可忍受的。再例如大型web網(wǎng)站的用戶登錄系統(tǒng),例如騰訊,盛大,動輒數(shù)以億計的帳號,關(guān)系數(shù)據(jù)庫也很難應(yīng)付。關(guān)系數(shù)據(jù)庫暴露的問題HugeStorage-對海量數(shù)據(jù)關(guān)系數(shù)據(jù)庫暴露的問題HighScalability&&HighAvailability-對數(shù)據(jù)庫的高可擴展性和高可用性的需求在基于web的架構(gòu)當(dāng)中,數(shù)據(jù)庫是最難進行橫向擴展的,當(dāng)一個應(yīng)用系統(tǒng)的用戶量和訪問量與日俱增的時候,你的數(shù)據(jù)庫卻沒有辦法像webserver和

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論