




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目6大數(shù)據(jù)處理技術(shù)目錄1任務(wù)6.1:熟悉大數(shù)據(jù)處理技術(shù)
【導(dǎo)讀案例】Cloudera領(lǐng)銜大數(shù)據(jù)基礎(chǔ)設(shè)施
【任務(wù)描述】
【知識(shí)準(zhǔn)備】大數(shù)據(jù)處理的內(nèi)容與技術(shù)【作業(yè)】【實(shí)訓(xùn)操作】理解和熟悉大數(shù)據(jù)處理技術(shù)【導(dǎo)讀案例】Cloudera領(lǐng)銜大數(shù)據(jù)基礎(chǔ)設(shè)施討論:(1)請(qǐng)通過網(wǎng)絡(luò)搜索,進(jìn)一步了解Cloudera公司,并做簡(jiǎn)單描述。(2)除了Cloudera,你還知道哪些領(lǐng)銜大數(shù)據(jù)基礎(chǔ)設(shè)施的公司?其中屬于中國(guó)的公司主要有哪些?(3)文中為什么說:“大數(shù)據(jù)技術(shù)需要花費(fèi)很長(zhǎng)時(shí)間才能融入企業(yè)中”?(4)請(qǐng)簡(jiǎn)單記述你所知道的上一周內(nèi)發(fā)生的國(guó)
際、國(guó)內(nèi)或者身邊的大事?!救蝿?wù)描述】(1)熟悉大數(shù)據(jù)處理的基本技術(shù),了解大數(shù)據(jù)處理的基本概念和技術(shù)架構(gòu)。(2)熟悉大數(shù)據(jù)處理的批處理模式和實(shí)時(shí)處理模式。(3)掌握大數(shù)據(jù)處理的處理工作量,熟悉SCV原則。(4)分析ETI企業(yè),掌握大數(shù)據(jù)處理工作量與處理模式工作方式。【知識(shí)準(zhǔn)備】大數(shù)據(jù)處理的內(nèi)容與技術(shù)大數(shù)據(jù)處理如今已不再是新話題了。在考慮數(shù)據(jù)倉(cāng)庫(kù)與其相關(guān)數(shù)據(jù)市場(chǎng)的關(guān)系時(shí),把龐大的數(shù)據(jù)集分成多個(gè)較小的數(shù)據(jù)集來處理可以加快大數(shù)據(jù)處理的速度。人們已經(jīng)把存儲(chǔ)在分布式文件系統(tǒng)、分布式數(shù)據(jù)庫(kù)上的大數(shù)據(jù)集分成較小的數(shù)據(jù)集了。要理解大數(shù)據(jù)處理,關(guān)鍵是要意識(shí)到處理大數(shù)據(jù)與在傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)中處理數(shù)據(jù)是不同的,大數(shù)據(jù)通常以分布式的方式在其各自存儲(chǔ)的位置進(jìn)行并行處理。許多大數(shù)據(jù)處理采用批處理模式,而針對(duì)以一定速度按時(shí)間順序到達(dá)的流式數(shù)據(jù),現(xiàn)今已經(jīng)有了相關(guān)的分析方法,例如,利用內(nèi)存架構(gòu),意義構(gòu)建理論可以提供態(tài)勢(shì)感知。流式大數(shù)據(jù)的處理應(yīng)遵循一項(xiàng)重要的原則,即SCV原則,其中:S代表Speed(速度),C代表Consistency(一致性),V代表Volume(容量)。開源技術(shù)的商業(yè)支援6.1.16.1.1開源技術(shù)的商業(yè)支援在大數(shù)據(jù)生態(tài)系統(tǒng)中,基礎(chǔ)設(shè)施主要負(fù)責(zé)數(shù)據(jù)存儲(chǔ)以及處理公司掌握的海量數(shù)據(jù)。應(yīng)用程序則是指人類和計(jì)算機(jī)系統(tǒng)通過使用這些程序,從數(shù)據(jù)中獲知關(guān)鍵信息。人們使用應(yīng)用程序使數(shù)據(jù)可視化,并由此做出更好的決策;而計(jì)算機(jī)則使用應(yīng)用系統(tǒng)將廣告投放到合適的人群,或者監(jiān)測(cè)信用卡欺詐行為。在大數(shù)據(jù)的演變中,開源軟件起到了很大的作用。如今,Linux已經(jīng)成為主流操作系統(tǒng),并與低成本的服務(wù)器硬件系統(tǒng)相結(jié)合。有了Linux,企業(yè)就能在低成本硬件上使用開源操作系統(tǒng),以低成本獲得許多相同的功能。MySQL開源數(shù)據(jù)庫(kù)、Apache開源網(wǎng)絡(luò)服務(wù)器以及PHP開源腳本語言(最初為創(chuàng)建網(wǎng)站開發(fā))搭配起來的實(shí)用性也推動(dòng)了Linux的普及。6.1.1開源技術(shù)的商業(yè)支援隨著越來越多的企業(yè)將Linux大規(guī)模地用于商業(yè)用途,他們期望獲得企業(yè)級(jí)的商業(yè)支持和保障。在眾多的供應(yīng)商中,紅帽子Linux(RedHat)脫穎而出,成為L(zhǎng)inux商業(yè)支持及服務(wù)的市場(chǎng)領(lǐng)導(dǎo)者。甲骨文公司(Oracle)也購(gòu)并了最初屬于瑞典MySQLAB公司的開源MySQL關(guān)系數(shù)據(jù)庫(kù)項(xiàng)目。6.1.1開源技術(shù)的商業(yè)支援IBM、Oracle(甲骨文)以及其他公司都在將他們所擁有的大型關(guān)系型數(shù)據(jù)庫(kù)商業(yè)化。關(guān)系型數(shù)據(jù)庫(kù)使數(shù)據(jù)存儲(chǔ)在自定義表中,再通過一個(gè)密碼進(jìn)行訪問。例如,一個(gè)雇員可以通過一個(gè)雇員編號(hào)認(rèn)定,然后該編號(hào)就會(huì)與包含該雇員信息的其他字段相聯(lián)系——她的名字、地址、雇用日期及職位等。本來這樣的結(jié)構(gòu)化數(shù)據(jù)庫(kù)還是可以適用的,直到公司不得不解決大量的非結(jié)構(gòu)化數(shù)據(jù)。比如谷歌必須處理海量網(wǎng)頁以及這些網(wǎng)頁鏈接之間的關(guān)系,而Facebook必須應(yīng)付社交圖譜數(shù)據(jù)。社交圖譜是其社交網(wǎng)站上人與人之間關(guān)系的數(shù)字表示——社交圖譜上每個(gè)點(diǎn)末端連接所有非結(jié)構(gòu)化數(shù)據(jù),例如照片、信息、個(gè)人檔案等。因此,這些公司也想利用低成本商用硬件。6.1.1開源技術(shù)的商業(yè)支援于是,像谷歌、雅虎、臉書以及其他這樣的公司開發(fā)出各自的解決方案,以存儲(chǔ)和處理大量的數(shù)據(jù)。正如UNIX的開源版本和甲骨文的數(shù)據(jù)庫(kù)以Linux和MySQL這樣的形式應(yīng)運(yùn)而生一樣,大數(shù)據(jù)世界里有許多類似的事物在不斷涌現(xiàn)。6.1.1開源技術(shù)的商業(yè)支援ApacheHadoop是一個(gè)開源分布式計(jì)算平臺(tái),通過Hadoop分布式文件系統(tǒng)HDFS(HadoopDistributedFileSystem)存儲(chǔ)大量數(shù)據(jù),再通過名為MapReduce的編程模型將這些數(shù)據(jù)的操作分成小片段。ApacheHadoop源自谷歌的原始創(chuàng)建技術(shù),隨后,開發(fā)了一系列圍繞Hadoop的開源技術(shù)。ApacheHive提供數(shù)據(jù)倉(cāng)庫(kù)功能,包括數(shù)據(jù)抽取、轉(zhuǎn)換、裝載(ETL),即將數(shù)據(jù)從各種來源中抽取出來,再實(shí)行轉(zhuǎn)換以滿足操作需要(包括確保數(shù)據(jù)質(zhì)量),然后裝載到目標(biāo)數(shù)據(jù)庫(kù)。ApacheHBase則提供處于Hadoop頂部的海量結(jié)構(gòu)化表的實(shí)時(shí)讀寫訪問功能,它仿照了谷歌的BigTable。同時(shí),ApacheCassandra通過復(fù)制數(shù)據(jù)來提供容錯(cuò)數(shù)據(jù)存儲(chǔ)功能。6.1.1開源技術(shù)的商業(yè)支援在過去,這些功能通常只能從商業(yè)軟件供應(yīng)商處依靠專門的硬件獲取。開源大數(shù)據(jù)技術(shù)正在使數(shù)據(jù)存儲(chǔ)和處理能力——這些本來只有像谷歌或其他商用運(yùn)營(yíng)商之類的公司才具備的能力,在商用硬件上也得到了應(yīng)用。這樣就降低了使用大數(shù)據(jù)的先期投入,并且具備了使大數(shù)據(jù)接觸到更多潛在用戶的潛力。6.1.1開源技術(shù)的商業(yè)支援開源軟件在開始使用時(shí)是免費(fèi)的,這使其對(duì)大多數(shù)人頗具吸引力,從而使一些商用運(yùn)營(yíng)商采用免費(fèi)增值的商業(yè)模式參與到競(jìng)爭(zhēng)當(dāng)中。產(chǎn)品在個(gè)人使用或有限數(shù)據(jù)的前提下是免費(fèi)的,但顧客需要在之后為部分或大量數(shù)據(jù)的使用付費(fèi)。久而久之,采用開源技術(shù)的這些企業(yè)往往需要商業(yè)支援,一如當(dāng)初使用Linux碰到的情形。像Cloudera、HortonWorks及MapR這樣的公司在為Hadoop解決這種需要的同時(shí),類似DataStax的公司也在為非關(guān)系型數(shù)據(jù)庫(kù)(cassandra)做著同樣的事情,LucidWorks之于ApacheLucerne也是如此(后者是一種開源搜索解決方案,用于索引并搜索大量網(wǎng)頁或文件)。大數(shù)據(jù)的技術(shù)架構(gòu)6.1.26.1.2大數(shù)據(jù)的技術(shù)架構(gòu)要容納數(shù)據(jù)本身,IT基礎(chǔ)架構(gòu)必須能夠以經(jīng)濟(jì)的方式存儲(chǔ)比以往更大量、類型更多的數(shù)據(jù)。此外,還必須能適應(yīng)數(shù)據(jù)變化的速度。由于數(shù)量如此大的數(shù)據(jù)難以在當(dāng)今的網(wǎng)絡(luò)連接條件下快速移動(dòng),因此,大數(shù)據(jù)基礎(chǔ)架構(gòu)必須分布計(jì)算能力,以便能在接近用戶的位置進(jìn)行數(shù)據(jù)分析,減少跨越網(wǎng)絡(luò)所引起的延遲。企業(yè)逐漸認(rèn)識(shí)到必須在數(shù)據(jù)駐留的位置進(jìn)行分析,分布這類計(jì)算能力,以便為分析工具提供實(shí)時(shí)響應(yīng)將帶來的挑戰(zhàn)??紤]到數(shù)據(jù)速度和數(shù)據(jù)量,移動(dòng)數(shù)據(jù)進(jìn)行處理是不現(xiàn)實(shí)的,相反,計(jì)算和分析工具可能會(huì)移到數(shù)據(jù)附近。而且,云計(jì)算模式對(duì)大數(shù)據(jù)的成功至關(guān)重要。云模型在從大數(shù)據(jù)中提取商業(yè)價(jià)值的同時(shí)也能為企業(yè)提供一種靈活的選擇,以實(shí)現(xiàn)大數(shù)據(jù)分析所需的效率、可擴(kuò)展性、數(shù)據(jù)便攜性和經(jīng)濟(jì)性。6.1.2大數(shù)據(jù)的技術(shù)架構(gòu)僅僅存儲(chǔ)和提供數(shù)據(jù)還不夠,必須以新的方式合成、分析和關(guān)聯(lián)數(shù)據(jù),才能提供商業(yè)價(jià)值。部分大數(shù)據(jù)方法要求處理未經(jīng)建模的數(shù)據(jù),因此,可以對(duì)毫不相干的數(shù)據(jù)源進(jìn)行不同類型數(shù)據(jù)的比較和模式匹配。這使得大數(shù)據(jù)分析能以新視角挖掘企業(yè)傳統(tǒng)數(shù)據(jù),并帶來傳統(tǒng)上
未曾分析過的數(shù)據(jù)洞察力?;谏鲜隹紤]構(gòu)建的適合大數(shù)據(jù)的4層堆棧
式技術(shù)架構(gòu)(見圖)。圖6-24層堆棧式大數(shù)據(jù)技術(shù)架構(gòu)6.1.2大數(shù)據(jù)的技術(shù)架構(gòu)(1)基礎(chǔ)層:第一層作為整個(gè)大數(shù)據(jù)技術(shù)架構(gòu)基礎(chǔ)的最底層,也是基礎(chǔ)層。要實(shí)現(xiàn)大數(shù)據(jù)規(guī)模的應(yīng)用,企業(yè)需要一個(gè)高度自動(dòng)化的、可橫向擴(kuò)展的存儲(chǔ)和計(jì)算平臺(tái)。這個(gè)基礎(chǔ)設(shè)施需要從以前的存儲(chǔ)孤島發(fā)展為具有共享能力的高容量存儲(chǔ)池。容量、性能和吞吐量必須可以線性擴(kuò)展。云模型鼓勵(lì)訪問數(shù)據(jù)并提供彈性資源池來應(yīng)對(duì)大規(guī)模問題,解決了如何存儲(chǔ)大量數(shù)據(jù),以及如何積聚所需的計(jì)算資源來操作數(shù)據(jù)的問題。在云中,數(shù)據(jù)跨多個(gè)節(jié)點(diǎn)調(diào)配和分布,使得數(shù)據(jù)更接近需要它的用戶,從而縮短響應(yīng)時(shí)間和提高生產(chǎn)率。6.1.2大數(shù)據(jù)的技術(shù)架構(gòu)(2)管理層:要支持在多源數(shù)據(jù)上做深層次的分析,大數(shù)據(jù)技術(shù)架構(gòu)中需要一個(gè)管理平臺(tái),使結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)管理融為一體,具備實(shí)時(shí)傳送和查詢、計(jì)算功能。本層既包括數(shù)據(jù)的存儲(chǔ)和管理,也涉及數(shù)據(jù)的計(jì)算。并行化和分布式是大數(shù)據(jù)管理平臺(tái)所必須考慮的要素。(3)分析層:大數(shù)據(jù)應(yīng)用需要大數(shù)據(jù)分析。分析層提供基于統(tǒng)計(jì)學(xué)的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)算法,用于分析和解釋數(shù)據(jù)集,幫助企業(yè)獲得對(duì)數(shù)據(jù)價(jià)值深入的領(lǐng)悟??蓴U(kuò)展性強(qiáng)、使用靈活的大數(shù)據(jù)分析平臺(tái)更可成為數(shù)據(jù)科學(xué)家的利器,起到事半功倍的效果。6.1.2大數(shù)據(jù)的技術(shù)架構(gòu)(4)應(yīng)用層:大數(shù)據(jù)的價(jià)值體現(xiàn)在幫助企業(yè)進(jìn)行決策和為終端用戶提供服務(wù)的應(yīng)用。不同的新型商業(yè)需求驅(qū)動(dòng)了大數(shù)據(jù)的應(yīng)用。另一方面,大數(shù)據(jù)應(yīng)用為企業(yè)提供的競(jìng)爭(zhēng)優(yōu)勢(shì)使得企業(yè)更加重視大數(shù)據(jù)的價(jià)值。新型大數(shù)據(jù)應(yīng)用對(duì)大數(shù)據(jù)技術(shù)不斷提出新的要求,大數(shù)據(jù)技術(shù)也因此在不斷地發(fā)展變化中日趨成熟。Hadoop數(shù)據(jù)處理基礎(chǔ)6.1.36.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)在傳統(tǒng)的數(shù)據(jù)存儲(chǔ)、處理平臺(tái)中,需要將數(shù)據(jù)從CRM、ERP等系統(tǒng)中,通過ELT(Extract/Load/Transform,抽取/加載/轉(zhuǎn)換)工具提取出來,并轉(zhuǎn)換為容易使用的形式,再導(dǎo)入像數(shù)據(jù)倉(cāng)庫(kù)和RDBMS等專用于分析的數(shù)據(jù)庫(kù)中。這樣的工作通常會(huì)按照計(jì)劃,以每天或者每周這樣的周期來進(jìn)行。然后,為了讓經(jīng)營(yíng)策劃等部門中的商務(wù)分析師能夠通過數(shù)據(jù)倉(cāng)庫(kù)用其中經(jīng)正則化處理的數(shù)據(jù)輸出固定格式的報(bào)表,并讓管理層能夠?qū)I(yè)績(jī)進(jìn)行管理和對(duì)目標(biāo)完成情況進(jìn)行查詢,就需要提供一個(gè)“管理指標(biāo)板”,將多張數(shù)據(jù)表和圖表整合顯示在一個(gè)畫面上。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)當(dāng)管理的數(shù)據(jù)超過一定規(guī)模時(shí),要完成這一系列工作,除了數(shù)據(jù)倉(cāng)庫(kù)之外,一般還需要使用如SAP的BusinessObjects、IBM的Cognos、Oracle的OracleBI等商業(yè)智能工具。用這些現(xiàn)有的平臺(tái)很難處理具備3V特征的大數(shù)據(jù),即便能夠處理,在性能方面也很難期望能有良好的表現(xiàn)。首先,隨著數(shù)據(jù)量的增加,數(shù)據(jù)倉(cāng)庫(kù)所帶來的負(fù)荷也會(huì)越來越大,數(shù)據(jù)裝載的時(shí)間和查詢的性能都會(huì)惡化。其次,企業(yè)目前所管理的數(shù)據(jù)都是如CRM、ERP、財(cái)務(wù)系統(tǒng)等產(chǎn)生的客戶數(shù)據(jù)、銷售數(shù)據(jù)等結(jié)構(gòu)化數(shù)據(jù),而現(xiàn)有的平臺(tái)在設(shè)計(jì)時(shí)并沒有考慮到由社交媒體、傳感器網(wǎng)絡(luò)等產(chǎn)生的非結(jié)構(gòu)化數(shù)據(jù)。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)因此,對(duì)這些時(shí)時(shí)刻刻都在產(chǎn)生的非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,并從中獲取有意義的觀點(diǎn),是十分困難的。由此可見,為了應(yīng)對(duì)大數(shù)據(jù)時(shí)代,需要從根本上重新考慮用于數(shù)據(jù)存儲(chǔ)和處理的平臺(tái)。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)1.Hadoop的由來Hadoop是一個(gè)能夠與當(dāng)前商用硬件兼容,用于存儲(chǔ)與分析海量數(shù)據(jù)的,對(duì)大規(guī)模數(shù)據(jù)進(jìn)行分布式處理的一種開源軟件技術(shù)(框架)。特別是處理大數(shù)據(jù)時(shí)代的非結(jié)構(gòu)化數(shù)據(jù)時(shí),Hadoop在性能和成本方面都具有優(yōu)勢(shì),而且通過橫向擴(kuò)展進(jìn)行擴(kuò)容也相對(duì)容易,因此備受關(guān)注。Hadoop是最受歡迎的在因特網(wǎng)上對(duì)搜索關(guān)鍵字進(jìn)行內(nèi)容分類的工具,但它也可以解決許多要求極大伸縮性的問題。事實(shí)上,它被公認(rèn)為當(dāng)代大數(shù)據(jù)解決方案的工業(yè)平臺(tái)。Hadoop可以作為ETL引擎與分析引擎來處理大量的結(jié)構(gòu)化、半結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)。從分析的角度來看,Hadoop實(shí)現(xiàn)了MapReduce處理框架,圖6-3描述了Hadoop的某些特征。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)圖6-3Hadoop是一個(gè)多功能的
系統(tǒng)架構(gòu),它可以提供數(shù)據(jù)存
儲(chǔ)與處理功能6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)Hadoop的基礎(chǔ)是美國(guó)Google公司于2004年發(fā)表的一篇關(guān)于大規(guī)模數(shù)據(jù)分布式處理的題為“MapReduce:大集群上的簡(jiǎn)單數(shù)據(jù)處理”的論文。Hadoop由ApacheSoftwareFoundation公司于2005年秋天作為L(zhǎng)ucene的子項(xiàng)目Nutch的一部分正式引入。它受到最先由GoogleLab開發(fā)的Map/Reduce和GoogleFileSystem(GFS)的啟發(fā)。2006年3月份,Map/Reduce和NutchDistributedFileSystem(NDFS)分別被納入稱為Hadoop的項(xiàng)目中。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)MapReduce指的是一種分布式處理的方法,而Hadoop則是將MapReduce通過開源方式進(jìn)行實(shí)現(xiàn)的框架(Framework)的名稱。造成這個(gè)局面的原因在于,Google在論文中公開的僅限于處理方法,而并沒有公開程序本身。也就是說,提到MapReduce,指的只是一種處理方法,而對(duì)其實(shí)現(xiàn)的形式并非只有Hadoop一種。反過來說,提到Hadoop,則指的是一種基于Apache授權(quán)協(xié)議,以開源形式發(fā)布的軟件程序。Hadoop原本是由三大部分組成的,即用于分布式存儲(chǔ)大容量文件的HDFS(HadoopDistributedFileSystem)分布式文件系統(tǒng),用于對(duì)大量數(shù)據(jù)進(jìn)行高效分布式處理的HadoopMapReduce框架,以及超大型數(shù)據(jù)表HBase。這些部分與Google的基礎(chǔ)技術(shù)相對(duì)應(yīng)(見圖6-4)。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)圖6-4Google與開源基礎(chǔ)技術(shù)的對(duì)應(yīng)關(guān)系6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)從數(shù)據(jù)處理的角度來看,HadoopMapReduce是其中最重要的部分。HadoopMapReduce并非用于配備高性能CPU和磁盤的計(jì)算機(jī),而是一種工作在由多臺(tái)通用型計(jì)算機(jī)組成的集群上的,對(duì)大規(guī)模數(shù)據(jù)進(jìn)行分布式處理的框架。在Hadoop中,是將應(yīng)用程序細(xì)分為在集群中任意節(jié)點(diǎn)上都可執(zhí)行的成百上千個(gè)工作負(fù)載,并分配給多個(gè)節(jié)點(diǎn)來執(zhí)行。然后,通過對(duì)各節(jié)點(diǎn)瞬間返回的信息進(jìn)行重組,得出最終的回答。雖然存在其他功能類似的程序,但Hadoop依靠其處理的高速性脫穎而出。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)對(duì)Hadoop的運(yùn)用,最早是雅虎、臉書、推特、AOL、Netflix等網(wǎng)絡(luò)公司先開始試水的。然而現(xiàn)在,其應(yīng)用領(lǐng)域已經(jīng)突破了行業(yè)的界限,如摩根大通、美國(guó)銀行、VISA等在內(nèi)的金融公司,以及諾基亞、三星、GE等制造業(yè)公司,沃爾瑪、迪士尼等零售業(yè)公司,甚至是中國(guó)移動(dòng)等通信業(yè)公司。與此同時(shí),最早由HDFS、HadoopMapReduce、HBase這三個(gè)組件所組成的軟件架構(gòu),現(xiàn)在也衍生出了多個(gè)子項(xiàng)目,其范圍也隨之逐步擴(kuò)大。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)2.Hadoop的優(yōu)勢(shì)Hadoop的一大優(yōu)勢(shì)是,過去由于成本、處理時(shí)間的限制而不得不放棄的對(duì)大量非結(jié)構(gòu)化數(shù)據(jù)的處理,現(xiàn)在則成為可能。也就是說,由于Hadoop集群的規(guī)??梢院苋菀椎?cái)U(kuò)展到PB甚至是EB級(jí)別,因此,企業(yè)里的數(shù)據(jù)分析師和市場(chǎng)營(yíng)銷人員過去只能依賴抽樣數(shù)據(jù)來進(jìn)行分析,而現(xiàn)在則可以將分析對(duì)象擴(kuò)展到全部數(shù)據(jù)的范圍了。而且,由于處理速度比過去有了飛躍性的提升,現(xiàn)在我們可以進(jìn)行若干次重復(fù)的分析,也可以用不同的查詢來進(jìn)行測(cè)試,從而有可能獲得過去無法獲得的更有價(jià)值的信息。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)Hadoop是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架。但是Hadoop是以一種可靠、高效、可伸縮的方式進(jìn)行處理的。Hadoop是可靠的,因?yàn)樗僭O(shè)計(jì)算元素和存儲(chǔ)會(huì)失敗,因此它維護(hù)多個(gè)工作數(shù)據(jù)副本,確保能夠針對(duì)失敗的節(jié)點(diǎn)重新分布處理。Hadoop是高效的,因?yàn)樗圆⑿械姆绞焦ぷ鳎ㄟ^并行處理加快處理速度。Hadoop還是可伸縮的,能夠處理PB級(jí)數(shù)據(jù)。此外,Hadoop依賴于社區(qū)服務(wù)器,因此它的成本比較低,任何人都可以使用。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)Hadoop是一個(gè)能夠讓用戶輕松架構(gòu)和使用的分布式計(jì)算平臺(tái)。用戶可以輕松地在Hadoop上開發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序。它主要有以下幾個(gè)優(yōu)點(diǎn):(1)高可靠性。Hadoop按位存儲(chǔ)和處理數(shù)據(jù)的能力值得人們信賴。(2)高擴(kuò)展性。Hadoop是在可用的計(jì)算機(jī)集簇間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集簇可以方便地?cái)U(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中。(3)高效性。Hadoop能夠在節(jié)點(diǎn)之間動(dòng)態(tài)地移動(dòng)數(shù)據(jù),并保證各個(gè)節(jié)點(diǎn)的動(dòng)態(tài)平衡,因此處理速度非??臁#?)高容錯(cuò)性。Hadoop能夠自動(dòng)保存數(shù)據(jù)的多個(gè)副本,并且能夠自動(dòng)將失敗的任務(wù)重新分配。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)Hadoop帶有用Java語言編寫的框架,因此運(yùn)行在Linux平臺(tái)上是非常理想的。Hadoop上的應(yīng)用程序也可以使用其他語言編寫,比如C++。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)3.Hadoop的發(fā)行版本Hadoop軟件目前依然在不斷引入先進(jìn)的功能,處于持續(xù)開發(fā)的過程中。因此,如果想要享受其先進(jìn)性所帶來的新功能和性能提升等好處,在公司內(nèi)部就需要具備相應(yīng)的技術(shù)實(shí)力。對(duì)于擁有眾多先進(jìn)技術(shù)人員的一部分大型系統(tǒng)集成公司和慣于使用開源軟件的互聯(lián)網(wǎng)公司來說,應(yīng)該可以滿足這樣的條件。相對(duì)地,對(duì)于一般企業(yè)來說,要運(yùn)用Hadoop這樣的開源軟件,還存在比較高的門檻。企業(yè)對(duì)于軟件的要求,不僅在于其高性能,還包括可靠性、穩(wěn)定性、安全性等因素。然而,Hadoop是可以免費(fèi)獲取的軟件,一般公司在搭建集群環(huán)境的時(shí)候,需要自行對(duì)上述因素做出擔(dān)保,難度確實(shí)很大。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)于是,為了解決這個(gè)問題,Hadoop也推出了發(fā)行版本。所謂發(fā)行版本(Distribution),和同為開源軟件的Linux的情況類似,是一種為改善開源社區(qū)所開發(fā)的軟件的易用性而提供的一種軟件包服務(wù)(見圖6-5),軟件包中通常包括安裝工具,以及捆綁事先驗(yàn)證過的一些周邊軟件。最先開始提供Hadoop商用發(fā)行版的是Cloudera公司。如今,Cloudera已經(jīng)成為名副其實(shí)的Hadoop商用發(fā)行版頭牌廠商。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)圖6-5Cloudera公司的Hadoop發(fā)行版6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)4.Hadoop與NoSQL作為支撐大數(shù)據(jù)的基礎(chǔ)技術(shù),能和Hadoop一樣受到越來越多關(guān)注的,就是NoSQL數(shù)據(jù)庫(kù)了。在大數(shù)據(jù)處理的基礎(chǔ)平臺(tái)中,需要由Hadoop和NoSQL數(shù)據(jù)庫(kù)來擔(dān)任核心角色。Hadoop已經(jīng)催生了多個(gè)子項(xiàng)目,其中包括基于Hadoop的數(shù)據(jù)倉(cāng)庫(kù)Hive和數(shù)據(jù)挖掘庫(kù)Mahout等,通過運(yùn)用這些工具,僅僅在Hadoop的環(huán)境中就可以完成數(shù)據(jù)分析的所有工作。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)然而,對(duì)于大多數(shù)企業(yè)來說,要拋棄已經(jīng)習(xí)慣的現(xiàn)有平臺(tái),從零開始搭建一個(gè)新的平臺(tái)來進(jìn)行數(shù)據(jù)分析,顯然是不現(xiàn)實(shí)的。因此,有些數(shù)據(jù)倉(cāng)庫(kù)廠商提出這樣一種方案,用Hadoop將數(shù)據(jù)處理成現(xiàn)有數(shù)據(jù)倉(cāng)庫(kù)能夠進(jìn)行存儲(chǔ)的形式(即用作前處理),在裝載數(shù)據(jù)之后再使用傳統(tǒng)的商業(yè)智能工具來進(jìn)行分析。Hadoop和NoSQL數(shù)據(jù)庫(kù),是在現(xiàn)有關(guān)系型數(shù)據(jù)庫(kù)和SQL等數(shù)據(jù)處理技術(shù)很難有效處理非結(jié)構(gòu)化數(shù)據(jù)這一背景下,由谷歌、亞馬遜、臉書等企業(yè)因自身迫切的需求而開發(fā)的。因此,作為一般企業(yè)不必非要推翻和替換現(xiàn)有的技術(shù),在銷售數(shù)據(jù)和客戶數(shù)據(jù)等結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和處理上,只要使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)和數(shù)據(jù)倉(cāng)庫(kù)就可以了。6.1.3Hadoop數(shù)據(jù)處理基礎(chǔ)由于Hadoop和NoSQL數(shù)據(jù)庫(kù)是開源的,因此和商用軟件相比,其軟件授權(quán)費(fèi)用十分低廉,但另一方面,想招募到精通這些技術(shù)的人才卻可能需要付出很高的成本。處理工作量6.1.46.1.4處理工作量大數(shù)據(jù)的處理工作量被定義為一定時(shí)間內(nèi)處理數(shù)據(jù)的性質(zhì)與數(shù)量。處理工作量主要分為批處理和事務(wù)兩種類型。(1)批處理型。也稱為脫機(jī)處理,這種方式通常成批地處理數(shù)據(jù),因而會(huì)導(dǎo)致較大的延遲。通常我們采用批處理完成大數(shù)據(jù)有序的讀/寫操作,這些讀/寫查詢通常是成批的。這種情形下的查詢一般涉及多種連接,非常復(fù)雜。聯(lián)機(jī)分析處理(OLAP)系統(tǒng)通常采用批處理模式處理數(shù)據(jù)。商務(wù)智能與分析需要對(duì)大量的數(shù)據(jù)進(jìn)行讀操作,因而一般使用批處理模式,批量地進(jìn)行讀/寫操作,以插入、選擇、更新與刪除數(shù)據(jù)。批處理型的工作量包括大量數(shù)據(jù)的成批讀/寫操作,并且會(huì)涉及多種連接,從而導(dǎo)致較大的延遲。6.1.4處理工作量(2)事務(wù)型。也稱為在線處理,這種處理方式通過無延遲的交互式處理使得整個(gè)回應(yīng)延遲很小。事務(wù)型處理一般適用于少量數(shù)據(jù)的隨機(jī)讀/寫操作。聯(lián)機(jī)事務(wù)處理(OLTP)系統(tǒng)與操作系統(tǒng)的寫操作比較密集,是典型的事務(wù)型處理系統(tǒng),盡管它們通常讀操作與寫操作混雜著進(jìn)行,但寫操作相對(duì)讀操作還是密集許多的。事務(wù)型處理適用于僅含少量連接的隨機(jī)讀/寫需求,企業(yè)的事務(wù)處理對(duì)實(shí)時(shí)性要求較高,因此一般采用回應(yīng)延遲小、數(shù)據(jù)量小的事務(wù)型處理方式。相比于批處理型,事務(wù)型處理含有少量的連接操作,回應(yīng)延遲也更小。批處理模式6.1.56.1.5批處理模式在批處理模式中,數(shù)據(jù)總是成批地脫機(jī)處理,響應(yīng)時(shí)長(zhǎng)從幾分鐘到幾小時(shí)不等。在這種情況下,數(shù)據(jù)被處理前必須在磁盤上保存。批處理模式適用于龐大的數(shù)據(jù)集,無論這個(gè)數(shù)據(jù)集是單個(gè)的還是由幾個(gè)數(shù)據(jù)集組合而成的,該模式可以本質(zhì)上解決大數(shù)據(jù)數(shù)據(jù)量大和數(shù)據(jù)特性不同的問題。批處理是大數(shù)據(jù)處理的主要方式,相較于實(shí)時(shí)模式,它比較簡(jiǎn)單,易于建立,開銷也比較小。像商務(wù)智能、預(yù)測(cè)性分析與規(guī)范性分析、ETL操作,一般都采用批處理模式。6.1.5批處理模式1.MapReduce批處理MapReduce是一種廣泛用于實(shí)現(xiàn)批處理的架構(gòu),它采用“分治”的原則,把一個(gè)大的問題分成可以被分別解決的小問題的集合,擁有內(nèi)部容錯(cuò)性與冗余,因而具有很高的可擴(kuò)展性與可靠性。MapReduce結(jié)合了分布式數(shù)據(jù)處理與并行數(shù)據(jù)處理的原理,并且使用商業(yè)硬件集群并行處理龐大的數(shù)據(jù)集,是一個(gè)基于批處理模式的數(shù)據(jù)處理引擎。MapReduce不對(duì)數(shù)據(jù)的模式作要求,因此它可以用于處理無模式的數(shù)據(jù)集。在MapReduce中,一個(gè)龐大的數(shù)據(jù)集被分為多個(gè)較小的數(shù)據(jù)集,分別在獨(dú)立的設(shè)備上并行處理,最后再把每個(gè)處理結(jié)果相結(jié)合得出最終結(jié)果。6.1.5批處理模式MapReduce是2000年年初谷歌的一項(xiàng)研究課題發(fā)表的,它不需要低延遲,因此一般僅支持批處理模式。MapReduce處理引擎與傳統(tǒng)的數(shù)據(jù)處理模式的工作機(jī)制有些不同。在傳統(tǒng)的數(shù)據(jù)處理模式中,數(shù)據(jù)由存儲(chǔ)節(jié)點(diǎn)發(fā)送到處理節(jié)點(diǎn)后才能被處理,這種方式在數(shù)據(jù)集較小的時(shí)候表現(xiàn)良好,但是數(shù)據(jù)集較大時(shí)發(fā)送數(shù)據(jù)將導(dǎo)致更大的開銷。而MapReduce是把數(shù)據(jù)處理算法發(fā)送到各個(gè)存儲(chǔ)節(jié)點(diǎn),數(shù)據(jù)在這些節(jié)點(diǎn)上被并行地處理,這種方式可以消除發(fā)送數(shù)據(jù)的時(shí)間開銷。由于并行處理小規(guī)模數(shù)據(jù)速度更快,MapReduce不但可以節(jié)約網(wǎng)絡(luò)帶寬的開銷,更能大量節(jié)約處理大規(guī)模數(shù)據(jù)的時(shí)間開銷。6.1.5批處理模式2.Map和Reduce任務(wù)一次MapReduce處理引擎的運(yùn)行被稱為MapReduce作業(yè),它由映射(Map)和歸約(Reduce)兩部分任務(wù)組成,這兩部分任務(wù)又被分為多個(gè)階段。其中映射任務(wù)被分為映射(map)、合并(combine)和分區(qū)(partition)三個(gè)階段,合并階段是可選的;歸約任務(wù)被分為洗牌和排序(shuffleandsort)與歸約(reduce)兩個(gè)階段。6.1.5批處理模式(1)映射。MapReduce的第一個(gè)階段稱為映射。映射階段首先把大的數(shù)據(jù)文件分割成多個(gè)小數(shù)據(jù)文件。每個(gè)較小的數(shù)據(jù)文件的每條記錄都被解析為一組鍵-值對(duì),通常鍵表示其對(duì)應(yīng)記錄的序號(hào),值則表示該記錄的實(shí)際值。通常每個(gè)小數(shù)據(jù)文件由多組鍵-值對(duì)組成,這些鍵-值對(duì)將會(huì)作為輸入由一個(gè)映射模塊處理,映射階段的邏輯由用戶決定,其中一個(gè)映射模塊僅處理一個(gè)小數(shù)據(jù)文件,且僅執(zhí)行一次。每組鍵-值對(duì)會(huì)按用戶自定義邏輯被映射為一組新的鍵-值對(duì)作為輸出。輸出的鍵可以與輸入的鍵相同,可以是由輸入值得出的一組字符串,還可以是用戶自定義的有序?qū)ο?。同樣,輸出的值也可與輸入值相同,可以是由輸入值得到的一組字符串,還可以是用戶自定義的有序?qū)ο蟆?.1.5批處理模式在這些輸出的鍵-值對(duì)中,可以存在多組鍵-值對(duì)的鍵相同的情況。另外要注意一點(diǎn),在映射過程中會(huì)發(fā)生過濾與復(fù)用。過濾是指對(duì)于一個(gè)輸入的鍵-值對(duì),映射可能不會(huì)產(chǎn)生任何輸出鍵-值對(duì);而復(fù)用是指某組輸入鍵-值對(duì)對(duì)應(yīng)多組輸出鍵-值對(duì)。映射階段的數(shù)據(jù)變化如圖6-6所示。圖6-6數(shù)據(jù)在映射階段的變化6.1.5批處理模式(2)合并。在MapReduce模型中,映射任務(wù)與歸約任務(wù)分別在不同的節(jié)點(diǎn)上進(jìn)行,而映射模塊的輸出需要被送到歸約模塊處理,這就要求把數(shù)據(jù)由映射任務(wù)節(jié)點(diǎn)傳輸?shù)綒w約任務(wù)節(jié)點(diǎn),這個(gè)過程往往會(huì)消耗大量的帶寬,并直接導(dǎo)致處理延時(shí)。因此就要對(duì)大量的鍵-值對(duì)進(jìn)行合并,以減少這些消耗。在大數(shù)據(jù)處理中,節(jié)點(diǎn)傳輸過程所花費(fèi)的時(shí)間往往大于真正處理數(shù)據(jù)的時(shí)間。MapReduce模型提出了一個(gè)可選的合并模塊。在映射模塊把多組鍵-值對(duì)輸入合并模塊之前,已經(jīng)將這些鍵-值對(duì)按鍵進(jìn)行排序,將對(duì)應(yīng)同一鍵的多條記錄變?yōu)橐粋€(gè)鍵對(duì)應(yīng)一組值,合并模塊則將每個(gè)鍵對(duì)應(yīng)的值組進(jìn)行合并,最終輸出僅為一條鍵-值對(duì)記錄。圖6-7描述了數(shù)據(jù)由映射階段到合并階段的變化。6.1.5批處理模式圖6-7數(shù)據(jù)在合并階段的變化6.1.5批處理模式由此可見,合并模塊本質(zhì)上還是一種歸約模塊,另外,歸約模塊還可被作為用戶自定義模塊使用。最后值得一提的是,合并模塊僅僅是一個(gè)可選的優(yōu)化模塊,在MapReduce模型中不是必備的。比如運(yùn)用合并模塊我們可以得出最大值或最小值,但無法得出所有數(shù)據(jù)的平均值,畢竟合并模塊的數(shù)據(jù)僅僅是所有數(shù)據(jù)的一個(gè)子集。6.1.5批處理模式(3)分區(qū)。在這個(gè)階段,當(dāng)使用多個(gè)歸約模塊時(shí),MapReduce模型就需要把映射模塊或合并模塊(如果該MapReduce引擎指明調(diào)用合并功能)的輸出分配給各個(gè)歸約模塊。在此我們把分配到每個(gè)歸約模塊的數(shù)據(jù)叫做一個(gè)分區(qū),也就是說,分區(qū)數(shù)與歸約模塊數(shù)是
相等的。圖描述了數(shù)據(jù)在分區(qū)階段
的變化。圖6-8數(shù)據(jù)在分區(qū)階段的變化6.1.5批處理模式盡管一個(gè)分區(qū)包含很多條記錄,但是對(duì)應(yīng)同一鍵的記錄必須被分在同一個(gè)分區(qū),在此基礎(chǔ)上,MapReduce模型會(huì)盡量保證隨機(jī)公平地把數(shù)據(jù)分配到各個(gè)歸約模塊當(dāng)中。由于上述分區(qū)模塊的特性,會(huì)導(dǎo)致分配到各個(gè)歸約模塊的數(shù)據(jù)量有差異,甚至分配給某個(gè)歸約模塊的數(shù)據(jù)量會(huì)遠(yuǎn)遠(yuǎn)超過其他的。不均等的工作量將造成各個(gè)歸約模塊工作結(jié)束時(shí)間不同,這樣最后總共消耗的時(shí)間將會(huì)大于絕對(duì)均等的分配方式。要緩解這個(gè)問題,就只能依靠?jī)?yōu)化分區(qū)模塊的邏輯來實(shí)現(xiàn)了。分區(qū)模塊是映射任務(wù)的最后一個(gè)階段,它的輸出為記錄對(duì)應(yīng)歸約模塊的索引號(hào)。6.1.5批處理模式(4)洗牌和排序。洗牌包括由分區(qū)模塊將數(shù)據(jù)傳輸?shù)綒w約模塊的整個(gè)過程,是歸約任務(wù)的第一個(gè)階段。由分區(qū)模塊傳輸來的數(shù)據(jù)可能存在多條記錄對(duì)應(yīng)同一個(gè)鍵。這個(gè)模塊將把對(duì)應(yīng)同一個(gè)鍵的記錄進(jìn)行組合,形成一個(gè)唯一鍵對(duì)應(yīng)一組值的鍵-值對(duì)列表。隨后該模塊對(duì)所有的鍵-值對(duì)進(jìn)行排序。組合與排序的方式在此可由用戶自定義。整個(gè)階段
的數(shù)據(jù)變化如圖所示。圖6-9數(shù)據(jù)在洗牌和排序階段的變化6.1.5批處理模式(5)歸約。這是歸約任務(wù)的最后一個(gè)階段,該模塊的邏輯由用戶自定義,它可能對(duì)輸入的記錄進(jìn)行進(jìn)一步分析歸納,也可能對(duì)輸入不作任何改變。在任何情形下,這個(gè)模塊都在處理當(dāng)條記錄的同時(shí)將其他處理過的記錄輸出。歸約模塊輸出的鍵-值對(duì)中,鍵可以與輸入鍵相同,也可以是由輸入值得到的字符串,或其他用戶自定義的有序?qū)ο?,值可以與輸入值相同,也可以是由輸入值得到的字符串,或其他用戶自定義的有序?qū)ο?。值得注意的是,映射模塊輸出的鍵-值對(duì)類型需要與歸約或合并模塊的輸入鍵-值對(duì)類型相對(duì)應(yīng)。另外,歸約模塊也會(huì)進(jìn)行過濾與復(fù)用,每個(gè)歸約模塊輸出的記錄組成單獨(dú)一個(gè)文件,也就是說被分配到每個(gè)歸約模塊的分區(qū)都將合并成一個(gè)文件,其數(shù)據(jù)變化如圖6-10所示。6.1.5批處理模式圖6-10數(shù)據(jù)在歸約階段的變化6.1.5批處理模式歸約模塊的數(shù)目是由用戶定義的,當(dāng)然,類似對(duì)數(shù)據(jù)記錄進(jìn)行過濾篩選,一個(gè)MapReduce作業(yè)可以不使用歸約模塊。6.1.5批處理模式3.MapReduce的簡(jiǎn)單實(shí)例圖6-11展示了一個(gè)MapReduce作業(yè)的簡(jiǎn)單實(shí)例,其主要步驟如下:圖6-11MapReduce實(shí)例6.1.5批處理模式(1)輸入文件sales.txt被分為兩個(gè)較小的數(shù)據(jù)文件:文件1,文件2。(2)文件1、文件2分別在節(jié)點(diǎn)A、節(jié)點(diǎn)B上,提取相關(guān)紀(jì)錄并完成映射任務(wù)。該任務(wù)的輸出為多組鍵-值對(duì),鍵為產(chǎn)品名稱,值為產(chǎn)品數(shù)量。(3)該作業(yè)的合并模塊將對(duì)應(yīng)同一產(chǎn)品的數(shù)量相加,得出每種產(chǎn)品的總量。(4)由于該作業(yè)僅使用一個(gè)歸約模塊,因而不需要對(duì)數(shù)據(jù)進(jìn)行分區(qū)。(5)節(jié)點(diǎn)A、B的處理結(jié)果被送到節(jié)點(diǎn)C,在節(jié)點(diǎn)C上首先對(duì)這些記錄進(jìn)行洗牌和排序。(6)排序后的數(shù)據(jù)輸出為一個(gè)產(chǎn)品名,對(duì)應(yīng)一組產(chǎn)品數(shù)量。(7)最后該作業(yè)的歸約模塊的邏輯與其合并模塊相同,將每種產(chǎn)品的數(shù)量相加,得到每種產(chǎn)品的總量。6.1.5批處理模式4.理解MapReduce算法與傳統(tǒng)的編程模式不同,MapReduce編程遵循一套特定的模式。那么如何在該模式上設(shè)計(jì)算法呢?首先我們要對(duì)算法的設(shè)計(jì)原則進(jìn)行探索。前文已經(jīng)提到,MapReduce采用了“分治”的原則,在MapReduce中如何理解“分治”是極為重要的,“分治”常用的幾種方式時(shí):任務(wù)并行:任務(wù)并行指的是將一個(gè)任務(wù)分為多個(gè)子任務(wù)在不同節(jié)點(diǎn)上并行進(jìn)行,通常并行的子任務(wù)采用不同的算法,每個(gè)子任務(wù)的輸入數(shù)據(jù)可以相同也可不同,最后多個(gè)子任務(wù)的結(jié)果組成最終結(jié)果。數(shù)據(jù)并行:數(shù)據(jù)并行指的是將一個(gè)數(shù)據(jù)集分為多個(gè)子數(shù)據(jù)集在多個(gè)節(jié)點(diǎn)上并行地處理,數(shù)據(jù)并行的多個(gè)節(jié)點(diǎn)采用同一算法,最后多個(gè)子數(shù)據(jù)集的處理結(jié)果組成最終結(jié)果。6.1.5批處理模式對(duì)于大數(shù)據(jù)應(yīng)用環(huán)境,某些操作需要在一個(gè)數(shù)據(jù)單元上重復(fù)多次,比如,當(dāng)一個(gè)數(shù)據(jù)集規(guī)模過大時(shí),通常需要將其分為較小的數(shù)據(jù)集在不同節(jié)點(diǎn)進(jìn)行處理。MapReduce為了滿足這種需求,采用分治中數(shù)據(jù)并行的方法,將大規(guī)模數(shù)據(jù)分成多個(gè)小數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊分別在不同的節(jié)點(diǎn)上進(jìn)行映射處理,這些節(jié)點(diǎn)的映射函數(shù)邏輯都是相同的?,F(xiàn)今大部分傳統(tǒng)算法的編程原則是基于過程的,也就是說對(duì)數(shù)據(jù)的操作是有序的,后續(xù)的操作依賴于它之前的操作。而MapReduce將對(duì)數(shù)據(jù)的操作分為“映射”與“歸約”兩部分,它的映射任務(wù)與歸約任務(wù)是相互獨(dú)立的,甚至每個(gè)映射實(shí)例或歸約實(shí)例之間都是相互獨(dú)立的。6.1.5批處理模式在傳統(tǒng)編程模型中,函數(shù)簽名是沒有限制的。而MapReduce編程模型中,映射函數(shù)與歸約函數(shù)的函數(shù)簽名必須為鍵-值對(duì)這一形式,只有這樣才能實(shí)現(xiàn)映射函數(shù)與歸約函數(shù)之間的通信。另外,映射函數(shù)的邏輯依賴于數(shù)據(jù)記錄的解析方式,即依賴于數(shù)據(jù)集中邏輯數(shù)據(jù)單元的組織方式。例如,通常情況下文本文件中每一行代表一條記錄,然而一條記錄也可能由兩行或多行文本組成。對(duì)于歸約函數(shù),基于它的輸入為單個(gè)鍵對(duì)應(yīng)一組值的記錄,它的邏輯與映射函數(shù)的輸出密切相關(guān),尤其是與它最終輸出什么鍵密切相關(guān)。值得一提的是,在某些應(yīng)用場(chǎng)景下,例如文本提取,我們不需要使用歸約函數(shù)。6.1.5批處理模式總結(jié)一下,在設(shè)計(jì)MapReduce算法時(shí),我們主要考慮以下幾點(diǎn):盡可能使用簡(jiǎn)單的算法邏輯,這樣才能采用同一函數(shù)邏輯處理某個(gè)數(shù)據(jù)集的不同部分,最終以某些方式將各部分的處理結(jié)果進(jìn)行匯總。數(shù)據(jù)集可以被分布式地劃分在集群中,如此才能保證映射函數(shù)并行地處理各個(gè)子數(shù)據(jù)集。理解數(shù)據(jù)集的數(shù)據(jù)結(jié)構(gòu)以保證選取有用的記錄。將算法邏輯分為映射部分與歸約部分,如此才能實(shí)現(xiàn)映射函數(shù)不依賴于整個(gè)數(shù)據(jù)集,畢竟它處理的僅僅是該數(shù)據(jù)集的一部分。保證映射函數(shù)的輸出是正確有效的,由于歸約函數(shù)的輸入為映射函數(shù)輸出的一部分,只有這樣才能保證整個(gè)算法的正確性。保證歸約函數(shù)的輸出是正確的,歸約函數(shù)的輸出則為整個(gè)MapReduce算法的輸出。SCV原則6.1.66.1.6SCV原則大數(shù)據(jù)處理遵循SCⅤ分布式數(shù)據(jù)處理基本原則,該原則對(duì)大數(shù)據(jù)處理施加的基本限制對(duì)實(shí)時(shí)模式處理有巨大的影響。6.1.6SCV原則SCV原則是,設(shè)計(jì)一個(gè)分布式數(shù)據(jù)處理系統(tǒng)時(shí)僅需滿是以下3項(xiàng)要求中的2項(xiàng):(1)速度(Speed)。是指數(shù)據(jù)一旦生成后處理的快慢。通常實(shí)時(shí)模式的速度快于批處理模式,因此僅有實(shí)時(shí)模式會(huì)考慮該項(xiàng)性能,并且在此忽略獲取數(shù)據(jù)的時(shí)間消耗,專注于實(shí)際數(shù)據(jù)處理的時(shí)間消耗,例如生成數(shù)據(jù)統(tǒng)計(jì)信息時(shí)間或算法的執(zhí)行時(shí)間。(2)一致性(Consistency)。指處理結(jié)果的準(zhǔn)確度與精度。如果處理結(jié)果的值接近于正確的值,并且二者有著相近的精度,則認(rèn)為該大數(shù)據(jù)處理系統(tǒng)具有高一致性。高一致性系統(tǒng)通常會(huì)利用全部數(shù)據(jù)來保證其準(zhǔn)確度與精度,而低一致性系統(tǒng)則采用采樣技術(shù),僅保證精度在一個(gè)可接受的范圍,結(jié)果也相對(duì)不準(zhǔn)確。6.1.6SCV原則(3)容量(Volume)。指系統(tǒng)能夠處理的數(shù)據(jù)量。大數(shù)據(jù)環(huán)境下,數(shù)據(jù)量的高速增長(zhǎng)導(dǎo)致大量的數(shù)據(jù)需要以分布式的方式進(jìn)行處理。要處理規(guī)模如此大的數(shù)據(jù),數(shù)據(jù)處理系統(tǒng)無法同時(shí)保證速度與一致性。如圖所示,如果要保證數(shù)據(jù)處理系統(tǒng)的速度與
一致性,就不可能保證大容量,因?yàn)榇罅康?/p>
數(shù)據(jù)必然會(huì)減慢處理速度。圖6-12SCV原則維恩圖6.1.6SCV原則如果要保證高度一致地處理大容量數(shù)據(jù),處理速度必然減慢。如果要高速處理大容量的數(shù)據(jù),則無法保證系統(tǒng)的高一致性,畢竟處理大規(guī)模數(shù)據(jù)僅能依靠采樣來保證更快的速度。實(shí)現(xiàn)一個(gè)分布式數(shù)據(jù)處理系統(tǒng),選擇SCV中的哪兩項(xiàng)特性主要以該系統(tǒng)分析環(huán)境的具體需求為依據(jù)。在大數(shù)據(jù)環(huán)境中,可能需要最大限度地保證數(shù)據(jù)規(guī)模來進(jìn)行深入分析,例如模式識(shí)別,也可能需要對(duì)數(shù)據(jù)進(jìn)行批處理以求進(jìn)一步研究。因此,選擇容量還是速度或一致性值得慎重考慮。6.1.6SCV原則在數(shù)據(jù)處理中,實(shí)時(shí)處理需要保證數(shù)據(jù)不丟失,即對(duì)數(shù)據(jù)處理容量(V)需求大,因此大數(shù)據(jù)實(shí)時(shí)處理系統(tǒng)通常僅在速度(S)與一致性(C)中做權(quán)衡,實(shí)現(xiàn)S+V或C+V。實(shí)時(shí)大數(shù)據(jù)處理包括實(shí)時(shí)處理與近實(shí)時(shí)處理。數(shù)據(jù)一旦到達(dá)企業(yè)就需要被低延遲地處理。在實(shí)時(shí)模式下,數(shù)據(jù)剛到達(dá)就在內(nèi)存中進(jìn)行處理,處理完畢再寫入磁盤供后續(xù)使用或存檔。而批處理模式恰與之相反,該種模式下數(shù)據(jù)首先被寫入磁盤,再被批量處理,從而將導(dǎo)致高延遲。實(shí)時(shí)處理模式6.1.76.1.7實(shí)時(shí)處理模式實(shí)時(shí)模式中,數(shù)據(jù)通常在寫入磁盤之前在內(nèi)存中進(jìn)行處理,它的延遲由亞秒級(jí)到分鐘級(jí)不等。實(shí)時(shí)模式側(cè)重的是提高大數(shù)據(jù)處理的速度。在大數(shù)據(jù)處理中,實(shí)時(shí)處理由于其處理的數(shù)據(jù)既可能是連續(xù)(流式)的也可能是間歇(事件)的,因而也被稱作流式處理或事件處理。這些流式數(shù)據(jù)或事件數(shù)據(jù)通常規(guī)模都比較小,但源源不斷處理這樣的數(shù)據(jù)得到的結(jié)果將構(gòu)成龐大的數(shù)據(jù)集。另外,交互模式也是實(shí)時(shí)模式的一種,該模式主要是基于查詢操作的。運(yùn)營(yíng)商務(wù)智能或分析通常在實(shí)時(shí)模式下進(jìn)行。6.1.7實(shí)時(shí)處理模式實(shí)時(shí)模式分析大數(shù)據(jù)需要使用內(nèi)存設(shè)備(IMDG或IMDB),數(shù)據(jù)到達(dá)內(nèi)存時(shí)被即時(shí)處理,期間沒有硬盤I/O延遲。實(shí)時(shí)處理可能包括一些簡(jiǎn)單的數(shù)據(jù)分析、復(fù)雜的算法執(zhí)行以及當(dāng)檢測(cè)到某些度量發(fā)生變化時(shí),對(duì)內(nèi)存數(shù)據(jù)進(jìn)行更新。為了增強(qiáng)實(shí)時(shí)分析的能力,實(shí)時(shí)處理的數(shù)據(jù)可以與之前批處理的數(shù)據(jù)結(jié)果或與磁盤上存儲(chǔ)的非規(guī)范化數(shù)據(jù)相結(jié)合,磁盤上的數(shù)據(jù)均可傳輸?shù)絻?nèi)存中,這樣有助于實(shí)現(xiàn)更好的實(shí)時(shí)處理。除了處理新獲取的數(shù)據(jù),實(shí)時(shí)模式還可以處理大量查詢請(qǐng)求以實(shí)現(xiàn)實(shí)時(shí)交互。在該種模式下,數(shù)據(jù)一旦被處理完畢,系統(tǒng)就將結(jié)果公布給感興趣的用戶,在此我們使用實(shí)時(shí)儀表板應(yīng)用或Web應(yīng)用將數(shù)據(jù)更新展示給用戶。6.1.7實(shí)時(shí)處理模式根據(jù)某些系統(tǒng)的需求,實(shí)時(shí)模式下處理過的數(shù)據(jù)和原始數(shù)據(jù)將被寫入磁盤供后續(xù)復(fù)雜的批量數(shù)據(jù)分析。圖6-13展示了典型的實(shí)時(shí)模式處理流程:圖6-13實(shí)時(shí)處理示例6.1.7實(shí)時(shí)處理模式(1)在數(shù)據(jù)傳輸引擎獲取流式數(shù)據(jù)。(2)數(shù)據(jù)同時(shí)被傳輸?shù)絻?nèi)存設(shè)備(a)與磁盤設(shè)備(b)。(3)數(shù)據(jù)處理引擎以實(shí)時(shí)模式處理存儲(chǔ)在內(nèi)存的數(shù)據(jù)。(4)處理結(jié)果被送到儀表板供操作分析。6.1.7
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇城鄉(xiāng)建設(shè)職業(yè)學(xué)院《多媒體影像創(chuàng)作》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東省菏澤市重點(diǎn)高中2024-2025學(xué)年高三化學(xué)試題5月最后一卷試題含解析
- 江蘇省泰興市達(dá)標(biāo)名校2024-2025學(xué)年初三年級(jí)第十一次網(wǎng)考生物試題含解析
- 江蘇省南京市鼓樓區(qū)重點(diǎn)達(dá)標(biāo)名校2024-2025學(xué)年中考預(yù)測(cè)金卷數(shù)學(xué)試題理(湖南卷)含解析
- 西昌學(xué)院《秘書禮儀》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧省丹東第十中學(xué)2025屆初三第二學(xué)期期初模擬訓(xùn)練一英語試題含答案
- 宿舍文化節(jié)活動(dòng)流程
- 技能培訓(xùn)經(jīng)典案例分享
- 上海市金山區(qū)2025屆高三二模語文試題(含答案)
- 下肢血管潰瘍的治療和護(hù)理
- 2022版義務(wù)教育語文課程標(biāo)準(zhǔn)(2022版含新增和修訂部分)
- 《新農(nóng)技推廣法解讀》ppt課件
- 社區(qū)家庭病床護(hù)理記錄文本匯總
- 色譜、質(zhì)譜、聯(lián)用
- 劍橋BEC中級(jí)真題第四輯TEST1
- 畢業(yè)設(shè)計(jì)(論文)-CK6150總體及縱向進(jìn)給和尾座部件的設(shè)計(jì)
- 施工項(xiàng)目人員任命書(范本)
- 苯酐裝置國(guó)內(nèi)同類裝置事故案例
- 蘇教版小學(xué)數(shù)學(xué)四年級(jí)下冊(cè)《圖形旋轉(zhuǎn)》練習(xí)題
- 智慧樹知到《開啟疑案之門的金鑰匙司法鑒定》見面課答案
- 結(jié)構(gòu)化面試技巧(完整版).ppt
評(píng)論
0/150
提交評(píng)論