大數(shù)據(jù)基礎(chǔ) 課件 單元3 大數(shù)據(jù)存儲(chǔ)與計(jì)算_第1頁
大數(shù)據(jù)基礎(chǔ) 課件 單元3 大數(shù)據(jù)存儲(chǔ)與計(jì)算_第2頁
大數(shù)據(jù)基礎(chǔ) 課件 單元3 大數(shù)據(jù)存儲(chǔ)與計(jì)算_第3頁
大數(shù)據(jù)基礎(chǔ) 課件 單元3 大數(shù)據(jù)存儲(chǔ)與計(jì)算_第4頁
大數(shù)據(jù)基礎(chǔ) 課件 單元3 大數(shù)據(jù)存儲(chǔ)與計(jì)算_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

儲(chǔ)與計(jì)算大數(shù)據(jù)存大數(shù)據(jù)基礎(chǔ)Unit3《大數(shù)據(jù)基礎(chǔ)》.移動(dòng)商務(wù)營(yíng)銷課程群3.1.1分布式存儲(chǔ)概述3.1.2HDFS工作原理3.1.3HDFS基礎(chǔ)命令3.1分布式存儲(chǔ)3.1.1分布式存儲(chǔ)概述1集中式存儲(chǔ)和分布式存儲(chǔ)集中式存儲(chǔ)就是指由一臺(tái)或多臺(tái)主計(jì)算機(jī)組成中心節(jié)點(diǎn),數(shù)據(jù)集中存儲(chǔ)于這個(gè)中心節(jié)點(diǎn)中,并且整個(gè)系統(tǒng)的所有業(yè)務(wù)單元都集中部署在這個(gè)中心節(jié)點(diǎn)上,系統(tǒng)所有的功能均由其集中處理。

集中式存儲(chǔ)系統(tǒng)最大的特點(diǎn)就是部署結(jié)構(gòu)簡(jiǎn)單,由于集中式系統(tǒng)往往基于底層性能卓越的大型主機(jī),因此無需考慮如何對(duì)服務(wù)進(jìn)行多個(gè)節(jié)點(diǎn)的部署,也就不用考慮多個(gè)節(jié)點(diǎn)之間的分布式協(xié)作問題。3.1.1分布式存儲(chǔ)概述1集中式存儲(chǔ)和分布式存儲(chǔ)分布式存儲(chǔ),是相對(duì)于集中式存儲(chǔ)來說的,是將數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立的網(wǎng)絡(luò)服務(wù)器上,這些服務(wù)器在空間部署上可以隨意分布,可能被放在不同的機(jī)柜上,也可能在不同的機(jī)房中,甚至分布在不同的城市。分布式存儲(chǔ)系統(tǒng)采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),滿足了大數(shù)據(jù)應(yīng)用存儲(chǔ)的需要,能夠利用多臺(tái)存儲(chǔ)服務(wù)器分擔(dān)存儲(chǔ)負(fù)荷,利用位置服務(wù)器定位存儲(chǔ)信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴(kuò)展。3.1.1分布式存儲(chǔ)概述2分布式存儲(chǔ)系統(tǒng)的特性分布式系統(tǒng)可以方便的擴(kuò)展到幾百臺(tái)到幾千臺(tái)的集群規(guī)模,而且,隨著集群規(guī)模的增長(zhǎng),系統(tǒng)整體性能表現(xiàn)為線性增長(zhǎng)??蓴U(kuò)展分布式存儲(chǔ)系統(tǒng)的自動(dòng)容錯(cuò)、自動(dòng)負(fù)載均衡機(jī)制使其可以構(gòu)建在普通PC機(jī)之上。另外,線性擴(kuò)展能力也使得增加、減少機(jī)器非常方便,可以使用較低的成本實(shí)現(xiàn)自動(dòng)運(yùn)維。低成本無論整個(gè)集群還是單機(jī)服務(wù),都要求分布式系統(tǒng)具備高性能。高性能分布式存儲(chǔ)系統(tǒng)需要提供易用的對(duì)外接口,另外也要求具備完善的監(jiān)控、運(yùn)維工具,并能夠方便地與其它系統(tǒng)集成。易用3.1.1分布式存儲(chǔ)概述

CAP理論加州大學(xué)伯克利分校的計(jì)算機(jī)教授EricBrewer在2000年提出,其核心思想是任何基于網(wǎng)絡(luò)的數(shù)據(jù)共享系統(tǒng)最多只能滿足數(shù)據(jù)一致性(Consistency)、可用性(Availability)和分區(qū)容忍性(PartitionTolerance)三個(gè)特性中的兩個(gè)。3分布式存儲(chǔ)系統(tǒng)面臨的挑戰(zhàn)3.1.1分布式存儲(chǔ)概述3分布式存儲(chǔ)系統(tǒng)面臨的挑戰(zhàn)是指保證系統(tǒng)中多個(gè)副本的數(shù)據(jù)完全一致的性質(zhì)。數(shù)據(jù)一致性(Consistency)是指在系統(tǒng)中的一部分節(jié)點(diǎn)出現(xiàn)故障之后,系統(tǒng)的整體不影響客戶端的讀/寫請(qǐng)求??捎眯?Availability)是指容忍系統(tǒng)的網(wǎng)絡(luò)出現(xiàn)分區(qū),分區(qū)之間網(wǎng)絡(luò)不可達(dá)。分區(qū)容忍性(PartitionTolerance)3.1.1分布式存儲(chǔ)概述

分區(qū)容忍性一個(gè)分布式系統(tǒng)里面,節(jié)點(diǎn)組成的網(wǎng)絡(luò)本來應(yīng)該是連通的。然而可能因?yàn)橐恍┕收?,使得有些?jié)點(diǎn)之間不連通了,整個(gè)網(wǎng)絡(luò)就分成了幾塊區(qū)域。數(shù)據(jù)就散布在了這些不連通的區(qū)域中。這就叫分區(qū)。當(dāng)你一個(gè)數(shù)據(jù)項(xiàng)只在一個(gè)節(jié)點(diǎn)中保存,那么分區(qū)出現(xiàn)后,和這個(gè)節(jié)點(diǎn)不連通的部分就訪問不到這個(gè)數(shù)據(jù)了。這時(shí)分區(qū)就是無法容忍的。

提高分區(qū)容忍性的辦法就是一個(gè)數(shù)據(jù)項(xiàng)復(fù)制到多個(gè)節(jié)點(diǎn)上,那么出現(xiàn)分區(qū)之后,這一數(shù)據(jù)項(xiàng)就可能分布到各個(gè)區(qū)里,容忍性就提高了。3分布式存儲(chǔ)系統(tǒng)面臨的挑戰(zhàn)3.1.1分布式存儲(chǔ)概述

一致性和可用性的矛盾由于當(dāng)前的網(wǎng)絡(luò)硬件肯定會(huì)出現(xiàn)延遲丟包等問題,所以分區(qū)容忍性是我們必須需要實(shí)現(xiàn)的。根據(jù)CAP理論,我們只能在一致性和可用性之間進(jìn)行權(quán)衡。總之,數(shù)據(jù)存在的節(jié)點(diǎn)越多,分區(qū)容忍性越高,這就要求復(fù)制更新的數(shù)據(jù)就越多,一致性就越難保證。為了保證一致性,每次寫操作就都要等待全部節(jié)點(diǎn)寫成功,更新所有節(jié)點(diǎn)數(shù)據(jù)所需要的時(shí)間就越長(zhǎng),可用性就會(huì)降低。3分布式存儲(chǔ)系統(tǒng)面臨的挑戰(zhàn)3.1.1分布式存儲(chǔ)概述4分布式存儲(chǔ)系統(tǒng)的分類

數(shù)據(jù)分類由于分布式存儲(chǔ)系統(tǒng)所面臨的數(shù)據(jù)需求相對(duì)復(fù)雜,大致可以分為三類:如所有格式的辦公文檔、文本、圖片、圖像、音頻和視頻信息等(1)非結(jié)構(gòu)化數(shù)據(jù)一般存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中,可以用二維關(guān)系表結(jié)構(gòu)表示(2)結(jié)構(gòu)化數(shù)據(jù)介于非結(jié)構(gòu)化和結(jié)構(gòu)化數(shù)據(jù)之間,如HTML,一般是自描述的(3)半結(jié)構(gòu)化數(shù)據(jù)3.1.1分布式存儲(chǔ)概述4分布式存儲(chǔ)系統(tǒng)的分類互聯(lián)網(wǎng)應(yīng)用中,需要存儲(chǔ)大量的圖片、照片、視頻等非結(jié)構(gòu)化的數(shù)據(jù),這類數(shù)據(jù)以對(duì)象的形式組織,對(duì)象之間沒有關(guān)聯(lián)。如Google的GFS和Hadoop的HDFS(1)分布式文件系統(tǒng)存儲(chǔ)簡(jiǎn)單的半結(jié)構(gòu)化數(shù)據(jù),它只提供基于主鍵的CRUD功能,即根據(jù)主鍵創(chuàng)建、讀取、更新或者刪除一條鍵值記錄。如Amazon的Dynamo以及Taobao的Tair。(2)分布式鍵值系統(tǒng)存儲(chǔ)關(guān)系較為復(fù)雜的半結(jié)構(gòu)化數(shù)據(jù),與分布式鍵值系統(tǒng)相關(guān),分布式表格系統(tǒng)不僅僅支持簡(jiǎn)單的CRUD操作,而且支持掃描某個(gè)主鍵范圍.如Google的Bigtable。(3)分布式表格系統(tǒng)用于存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)。分布式數(shù)據(jù)庫采用二維表格組織數(shù)據(jù),并且提供SQL關(guān)系查詢語言,支持多表關(guān)聯(lián),嵌套子查詢等復(fù)雜的操作,并提供數(shù)據(jù)庫事務(wù)以及并發(fā)控制。如MySQL數(shù)據(jù)庫分片集群。(4)分布式數(shù)據(jù)庫分布式存儲(chǔ)按照處理不同類型的數(shù)據(jù),大致可分為以下四類:《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動(dòng)商務(wù)營(yíng)銷課程群儲(chǔ)與計(jì)算大數(shù)據(jù)存大數(shù)據(jù)基礎(chǔ)Unit3《大數(shù)據(jù)基礎(chǔ)》.移動(dòng)商務(wù)營(yíng)銷課程群3.1.1分布式存儲(chǔ)概述3.1.2HDFS工作原理3.1.3HDFS基礎(chǔ)命令3.1分布式存儲(chǔ)3.1.2HDFS工作原理2003年至2006年,Google發(fā)布了著名的三大論文,分別是:2003年發(fā)布的分布式文件系統(tǒng)GoogleFileSystem,2004年發(fā)布的分布式并行計(jì)算框架MapReduce,2006年發(fā)布的大型的分布式數(shù)據(jù)庫Bigtable。

以三大論文為基礎(chǔ),演化出了開源項(xiàng)目Hadoop,Hadoop的核心是分布式文件存儲(chǔ)系統(tǒng)HDFS和分布式并行計(jì)算框架MapReduce。3.1.2HDFS工作原理1HDFS概述

HDFS(HadoopDistributedFileSystem)HDFS全稱Hadoop分布式文件系統(tǒng),是由Google在2003年發(fā)布的分布式文件系統(tǒng)GoogleFileSystem論文基礎(chǔ)上演化而來的開源版本。HDFS是Hadoop生態(tài)系統(tǒng)中非常重要的一環(huán),它為管理大數(shù)據(jù)資源池和支撐相關(guān)大數(shù)據(jù)分析應(yīng)用提供了一個(gè)具有高可靠性的工具。

3.1.2HDFS工作原理1HDFS概述

HDFS的優(yōu)缺點(diǎn)

HDFS的優(yōu)點(diǎn):高容錯(cuò)性,數(shù)據(jù)自動(dòng)保存多份;被設(shè)計(jì)為能夠部署在低廉的硬件上;提供高吞吐量來訪問應(yīng)用程序的數(shù)據(jù),適合處理大數(shù)據(jù);流式文件訪問,允許一次寫入,多次讀取;適合進(jìn)行批處理。HDFS的缺點(diǎn):不善于處理低延遲數(shù)據(jù)訪問;不善于處理小文件存?。徊恢С植l(fā)寫入,一個(gè)文件同時(shí)只能被一個(gè)寫入者修改。3.1.2HDFS工作原理2HDFS中的基礎(chǔ)概念HDFS中的存儲(chǔ)單元是數(shù)據(jù)塊,它的默認(rèn)大小是64M,也就是HDFS中的文件是被分成一塊塊的64M的數(shù)據(jù)塊存儲(chǔ)的。數(shù)據(jù)塊(Block)維護(hù)著文件系統(tǒng)樹及整棵樹內(nèi)所有的文件和目錄,并以兩個(gè)文件形式永久保存在本地磁盤上:命名空間鏡像和編輯日志。該節(jié)點(diǎn)也記錄著每個(gè)文件中各個(gè)數(shù)據(jù)塊所在的數(shù)據(jù)節(jié)點(diǎn)信息。元數(shù)據(jù)節(jié)點(diǎn)(NameNode)是真正存儲(chǔ)數(shù)據(jù)的地方??蛻舳耍╟lient)和元數(shù)據(jù)節(jié)點(diǎn)可以向數(shù)據(jù)節(jié)點(diǎn)請(qǐng)求寫入或者讀出數(shù)據(jù)塊。該節(jié)點(diǎn)也需要周期性的向元數(shù)據(jù)節(jié)點(diǎn)匯報(bào)其存儲(chǔ)的數(shù)據(jù)塊信息。數(shù)據(jù)節(jié)點(diǎn)(DataNode)主要功能是周期性的將元數(shù)據(jù)節(jié)點(diǎn)的命名空間鏡像和編輯日志合并,以防日志文件過大;合并后的命名空間鏡像也會(huì)在該節(jié)點(diǎn)保存一份。從元數(shù)據(jù)節(jié)點(diǎn)(SecondaryNameNode)3.1.2HDFS工作原理3HDFS中文件寫入操作流程客戶端(HDFSClient)元數(shù)據(jù)節(jié)點(diǎn)(NameNode)數(shù)據(jù)節(jié)點(diǎn)(DataNode)3.1.2HDFS工作原理4HDFS中文件讀取操作流程客戶端(HDFSClient)元數(shù)據(jù)節(jié)點(diǎn)(NameNode)數(shù)據(jù)節(jié)點(diǎn)(DataNode)《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動(dòng)商務(wù)營(yíng)銷課程群儲(chǔ)與計(jì)算大數(shù)據(jù)存大數(shù)據(jù)基礎(chǔ)Unit3《大數(shù)據(jù)基礎(chǔ)》.移動(dòng)商務(wù)營(yíng)銷課程群3.1.1分布式存儲(chǔ)概述3.1.2HDFS工作原理3.1.3HDFS基礎(chǔ)命令3.1分布式存儲(chǔ)3.1.3HDFS基礎(chǔ)命令1HDFS命令概述

HDFS提供了相當(dāng)多的Shell操作命令,大大方便了程序員和系統(tǒng)管理員查看、修改HDFS上的文件。比如文件操作命令hdfsdfs、管理命令hdfsdfsadmin等。進(jìn)一步,HDFS的操作命令和Unix/Linux的命令名稱和格式相當(dāng)一致,因而學(xué)習(xí)HDFS命令的成本也大為縮小。3.1.3HDFS基礎(chǔ)命令2HDFS文件操作命令HDFS文件操作命令是hdfsdfs起始的高度類似linux文件操作的命令集??梢允褂眠@些命令查看HDFS上的目錄結(jié)構(gòu)、上傳和下載文件、創(chuàng)建文件夾、復(fù)制文件等。

查看目錄結(jié)構(gòu)命令lshdfsdfs-ls文件夾路徑

功能:列出文件夾內(nèi)的一層目錄hdfsdfs-ls-R文件夾路徑

功能:列出文件夾內(nèi)的多層的所有目錄例如:hdfsdfs-ls/home/zjiet例如:hdfsdfs-ls–R/home/zjiet3.1.3HDFS基礎(chǔ)命令2HDFS文件操作命令hdfsdfs–mkdir文件夾路徑功能:創(chuàng)建一個(gè)文件夾。如果路徑中間的文件夾不存在,無法創(chuàng)建。hdfsdfs–mkdir-p文件夾路徑功能:創(chuàng)建多層的文件夾。如果路徑中間的文件夾不存在,多層的文件夾都會(huì)創(chuàng)建。

創(chuàng)建文件夾命令mkdir例如:hdfsdfs-mkdir/home/zjiet例如:hdfsdfs–mkdir-p/home/zjiet3.1.3HDFS基礎(chǔ)命令2HDFS文件操作命令hdfsdfs–touchz文件路徑

功能:創(chuàng)建一個(gè)文件。如果文件本就存在就失敗。hdfsdfs–cat文件路徑功能:查看文件內(nèi)容。

創(chuàng)建文件命令touchz

查看文件內(nèi)容命令cat例如:hdfsdfs-touchz/home/zjiet/news.txt例如:hdfsdfs-cat/home/zjiet/news.txt3.1.3HDFS基礎(chǔ)命令2HDFS文件操作命令hdfsdfs-cp文件路徑文件夾路徑功能:復(fù)制一個(gè)文件到另一個(gè)文件夾內(nèi)。

復(fù)制文件命令cp例如:hdfsdfs-cp/home/zjiet/news.txt

/home/zjiet23.1.3HDFS基礎(chǔ)命令2HDFS文件操作命令hdfsdfs–rm文件功能:刪除文件。

刪除文件和目錄命令rmhdfsdfs–rm–r文件夾路徑功能:刪除文件或文件夾內(nèi)所有內(nèi)容。例如:hdfsdfs-rm/home/zjiet/news.txt例如:hdfsdfs-rm–r/home/zjiet3.1.3HDFS基礎(chǔ)命令2HDFS文件操作命令hdfsdfs–put本地路徑HDFS系統(tǒng)路徑功能:本地路徑的文件上傳到HDFS目錄。

上傳文件或目錄命令put例如:hdfsdfs-put/centos/news.txt

/home/zjiet3.1.3HDFS基礎(chǔ)命令2HDFS文件操作命令hdfsdfs–getHDFS系統(tǒng)路徑本地路徑功能:HDFS目錄下的文件下載到本地路徑

下載文件或目錄命令get例如:hdfsdfs-get/home/zjiet/news.txt/centos《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動(dòng)商務(wù)營(yíng)銷課程群儲(chǔ)與計(jì)算大數(shù)據(jù)存大數(shù)據(jù)基礎(chǔ)Unit3《大數(shù)據(jù)基礎(chǔ)》.移動(dòng)商務(wù)營(yíng)銷課程群3.2.1分布式計(jì)算概述3.2.2MapReduce計(jì)算框架3.2分布式計(jì)算3.2.1分布式計(jì)算概述1分布式計(jì)算的定義分布式計(jì)算技術(shù)是一門計(jì)算機(jī)科學(xué),它研究如何把一個(gè)需要非常巨大的計(jì)算能力才能解決的問題分成許多小的部分,然后把這些部分分配給許多計(jì)算機(jī)進(jìn)行處理,最后把這些計(jì)算結(jié)果綜合起來得到最終的結(jié)果。3.2.1分布式計(jì)算概述2分布式計(jì)算的分類-批處理和流處理批處理流處理12按照對(duì)數(shù)據(jù)的處理時(shí)效分類實(shí)時(shí)產(chǎn)生的新的數(shù)據(jù)先被存儲(chǔ)起來,在未來的某個(gè)時(shí)間一批批的處理。

它可以基于預(yù)定的時(shí)間間隔如每五分鐘、或每天等處理一次,或在某些觸發(fā)的條件下如新的數(shù)據(jù)容量達(dá)到預(yù)定規(guī)模等。實(shí)時(shí)產(chǎn)生的新的數(shù)據(jù)會(huì)被實(shí)時(shí)的一條條的處理,而不會(huì)等待到未來的某個(gè)時(shí)刻一批處理。

如今,越來越多的系統(tǒng)設(shè)計(jì)用于流處理,以支持近乎實(shí)時(shí)的事件處理。3.2.1分布式計(jì)算概述2分布式計(jì)算的分類-批處理和流處理

批處理和流處理之間差異的含義盡管流處理和批處理之間的差異似乎只是時(shí)間差異的問題。

但它們實(shí)際上對(duì)數(shù)據(jù)處理系統(tǒng)的體系結(jié)構(gòu)和使用它們的應(yīng)用程序都有著根本的影響。

流處理系統(tǒng)的設(shè)計(jì)是為了在數(shù)據(jù)到達(dá)時(shí)對(duì)其進(jìn)行響應(yīng)。這就要求它們實(shí)現(xiàn)一個(gè)由事件驅(qū)動(dòng)的體系結(jié)構(gòu),即系統(tǒng)的內(nèi)部工作流設(shè)計(jì)為在接收到數(shù)據(jù)后立即連續(xù)監(jiān)視新數(shù)據(jù)和調(diào)度處理。

批處理系統(tǒng)中的內(nèi)部工作流只定期檢查新數(shù)據(jù),并且只在下一個(gè)批處理窗口發(fā)生時(shí)處理該數(shù)據(jù)。3.2.1分布式計(jì)算概述2分布式計(jì)算的分類-批處理和流處理處理場(chǎng)景批處理通常適用于具有最新數(shù)據(jù)并不重要的用例,以及容忍較慢響應(yīng)時(shí)間的情況。例如,對(duì)歷史數(shù)據(jù)進(jìn)行離線分析以計(jì)算結(jié)果或識(shí)別相關(guān)性是一種常見的批處理用例。流處理對(duì)于需要實(shí)時(shí)交互和實(shí)時(shí)響應(yīng)的情況是必需的。金融交易處理,實(shí)時(shí)欺詐檢測(cè)和實(shí)時(shí)定價(jià)是最適合流處理的示例。分布式計(jì)算概述3分布式計(jì)算常用框架

MapReduceHadoop的MapReduce是Google在2004年發(fā)布的分布式并行計(jì)算框架MapReduce論文的開源實(shí)現(xiàn),是適合處理大級(jí)別量的離線數(shù)據(jù)批處理的分布式計(jì)算框架。它不適合處理大量的小文件和有實(shí)時(shí)性要求的任務(wù)。

目前市面上有很多大數(shù)據(jù)框架,有突出代表性的如批處理計(jì)算框架MapReduce,流處理計(jì)算框架Storm,以及混合處理型計(jì)算框架Spark。分布式計(jì)算概述3分布式計(jì)算常用框架

StormStorm是由類Lisp語言開發(fā)的一個(gè)用來處理實(shí)時(shí)的大數(shù)據(jù)的基于流處理的分布式計(jì)算框架。

它的出現(xiàn)在一定程度上結(jié)束了Hadoop的MapReduce的延遲比較大,后期程序運(yùn)維復(fù)雜等特點(diǎn),而且它還有MapReduce所不能支持的實(shí)時(shí)性、流式計(jì)算等特點(diǎn)。對(duì)一些實(shí)時(shí)性的數(shù)據(jù)分析,Storm具有非常高的效率。分布式計(jì)算概述3分布式計(jì)算常用框架

SparkSpark是使用Scala編寫、基于RDD(ResilientDistributedDatasets)彈性分布式內(nèi)存數(shù)據(jù)集的批處理的分布式計(jì)算框架。同時(shí),Spark生態(tài)系統(tǒng)中還包括很多附加庫,其中的SparkStreaming基于微批量方式的計(jì)算和處理,可以用于處理實(shí)時(shí)的流數(shù)據(jù)。

該框架基于內(nèi)存計(jì)算,解決了在Hadoop的MapReduce計(jì)算框架中,執(zhí)行迭代性質(zhì)的任務(wù)效率比較低的弊端,除此之外該框架還提供了任務(wù)執(zhí)行期間的交互查詢,增加了任務(wù)的可控性。相比Hadoop,Spark除了提供計(jì)算的方法調(diào)用之外,還提供了更多的操作。《大數(shù)據(jù)基礎(chǔ)》在線開放課程組《大數(shù)據(jù)基礎(chǔ)》.移動(dòng)商務(wù)營(yíng)銷課程群儲(chǔ)與計(jì)算大數(shù)據(jù)存大數(shù)據(jù)基礎(chǔ)Unit3《大數(shù)據(jù)基礎(chǔ)》.移動(dòng)商務(wù)營(yíng)銷課程群3.2.1分布式計(jì)算概述3.2.2MapReduce計(jì)算框架3.2分布式計(jì)算3.2.2MapReduce計(jì)算框架1MapReduce計(jì)算框架簡(jiǎn)介

MapReduce最早是由Google公司研究提出的一種面向大規(guī)模數(shù)據(jù)處理的并行計(jì)算模型和方法。設(shè)計(jì)初衷主要是為了解決其搜索引擎中大規(guī)模網(wǎng)頁數(shù)據(jù)的并行化處理。

但由于MapReduce可以普遍應(yīng)用于很多大規(guī)模數(shù)據(jù)的計(jì)算問題,Google公司內(nèi)部進(jìn)一步將其廣泛應(yīng)用于很多大規(guī)模數(shù)據(jù)處理問題。

2004年,Google公司在國(guó)際會(huì)議上發(fā)表了MapReduce的論文,公布了基本原理和主要設(shè)計(jì)思想。3.2.2MapReduce計(jì)算框架1MapReduce計(jì)算框架簡(jiǎn)介在Google的MapReduce論文基礎(chǔ)上,基于Java設(shè)計(jì)開發(fā)了開源MapReduce并行計(jì)算框架,和HDFS構(gòu)成了Hadoop的核心。MapReduce極大地方便了編程人員在不會(huì)分布式并行編程的情況下,將自己的程序運(yùn)行在分布式系統(tǒng)上。

Hadoop成為Apache開源組織下最重要的項(xiàng)目,自其推出后很快得到了全球?qū)W術(shù)界和工業(yè)界的普遍關(guān)注,并得到推廣和普及應(yīng)用。

3.2.2MapReduce計(jì)算框架2HadoopMapReduce的計(jì)算原理

MapReduce設(shè)計(jì)思想

MapReduce源于函數(shù)式語言中的內(nèi)置函數(shù)map和reduce,把一個(gè)計(jì)算分成map與reduce兩個(gè)計(jì)算過程,采用“分而治之”的設(shè)計(jì)思想。

它把一個(gè)大的計(jì)算任務(wù)劃分為多個(gè)小的計(jì)算任務(wù),然后把每個(gè)小的計(jì)算任務(wù)分配給集群的每個(gè)計(jì)算節(jié)點(diǎn),并一直跟蹤每個(gè)計(jì)算節(jié)點(diǎn)的進(jìn)度決定是否重新執(zhí)行該任務(wù),最后收集每個(gè)節(jié)點(diǎn)上的計(jì)算結(jié)果并輸出。3.2.2MapReduce計(jì)算框架2HadoopMapReduce的計(jì)算原理

MapReduce計(jì)算過程

MapReduce計(jì)算過程可以分為Map階段和Reduce階段。Map是映射,負(fù)責(zé)數(shù)據(jù)的過濾分發(fā);Reduce是規(guī)約,負(fù)責(zé)數(shù)據(jù)的計(jì)算歸并。

更詳細(xì)的,一個(gè)Map/Reduce作業(yè)(job)在輸入數(shù)據(jù)、輸出結(jié)果之間還經(jīng)歷了Split、Map、Shuffle、Reduce等階段。MapReduce計(jì)算過程所處理的數(shù)據(jù)都是按鍵值對(duì)(<key,value>)存儲(chǔ)和使用的。3.2.2MapReduce計(jì)算框架2HadoopMapReduce的計(jì)算原理MapReduce流程:Input->split->map->shuffle->reduce->resultSplit階段每個(gè)輸入文件進(jìn)行切分,分片輸入到map。3.2.2MapReduce計(jì)算框架2HadoopMapReduce的計(jì)算原理MapReduce流程:Input->split->map->shuffle->reduce->resultMap階段執(zhí)行map任務(wù),任務(wù)的數(shù)量由分片決定。提供Map接口,可以由開發(fā)者對(duì)輸入的數(shù)據(jù)進(jìn)行處理,得到計(jì)算需要的map階段的輸出數(shù)據(jù)。3.2.2MapReduce計(jì)算框架2HadoopMapReduce的計(jì)算原理MapReduce流程:Input->split->map->shuffle->reduce->resultShuffle階段MapReduce的核心,是奇跡發(fā)生的地方。描述著數(shù)據(jù)從map任務(wù)的輸出到reduce任務(wù)的輸入之間這段過程,也稱為“混洗”。分為map端操作和reduce端操作。3.2.2MapReduce計(jì)算框架2HadoopMapReduce的計(jì)算原理一個(gè)map的輸出先寫入緩存,當(dāng)每次緩存快滿時(shí),由緩存溢寫至磁盤,每次溢寫都先進(jìn)行分區(qū),并對(duì)每個(gè)分區(qū)的數(shù)據(jù)進(jìn)行排序(sort)和合并(combine)。最后,通知reduce任務(wù)來領(lǐng)取自己的分區(qū)。Shuffle的Map端操作每個(gè)reduce任務(wù)會(huì)從多個(gè)map任務(wù)領(lǐng)取分區(qū),然后將這些文件進(jìn)行歸并(merge),交給reduce任務(wù)。Shuffle的Reduce端操作注意:設(shè)兩個(gè)鍵值對(duì)<“a”,1>和<“a”,1>,如果合并(

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論