《大數(shù)據(jù)技術(shù)基礎(chǔ)》(覃事剛)792-4課件 第五章 數(shù)據(jù)處理與分析_第1頁
《大數(shù)據(jù)技術(shù)基礎(chǔ)》(覃事剛)792-4課件 第五章 數(shù)據(jù)處理與分析_第2頁
《大數(shù)據(jù)技術(shù)基礎(chǔ)》(覃事剛)792-4課件 第五章 數(shù)據(jù)處理與分析_第3頁
《大數(shù)據(jù)技術(shù)基礎(chǔ)》(覃事剛)792-4課件 第五章 數(shù)據(jù)處理與分析_第4頁
《大數(shù)據(jù)技術(shù)基礎(chǔ)》(覃事剛)792-4課件 第五章 數(shù)據(jù)處理與分析_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章數(shù)據(jù)處理與分析大數(shù)據(jù)技術(shù)基礎(chǔ)(第2版)PREFACE本章導(dǎo)讀隨著信息化技術(shù)的迭代更新和互聯(lián)網(wǎng)應(yīng)用的蓬勃發(fā)展,巨大的數(shù)據(jù)規(guī)模和復(fù)雜的數(shù)據(jù)關(guān)系,促使各種數(shù)據(jù)處理與分析技術(shù)不斷被提出和應(yīng)用,并取得了巨大的成功,如MapReduce、Spark等。在數(shù)據(jù)處理與分析環(huán)節(jié),可以利用傳統(tǒng)的統(tǒng)計學(xué)、機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘方法,并結(jié)合高性能的數(shù)據(jù)處理與分析技術(shù),對數(shù)據(jù)進(jìn)行處理與分析,從而得到有價值的結(jié)果,更好地服務(wù)于生產(chǎn)和生活。01大數(shù)據(jù)計算模式02分布式并行編程模型MapReduce03分布式數(shù)據(jù)庫HBase04分布式協(xié)調(diào)服務(wù)ZooKeeperCATALOG05基于內(nèi)存的大數(shù)據(jù)處理引擎Spark知識目標(biāo)03了解YARN的基本架構(gòu)及組件,理解其工作流程。02理解MapReduce的概念和工作流程。01了解常見的大數(shù)據(jù)計算模式。知識目標(biāo)04了解ZooKeeper的概念、應(yīng)用場景和集群總體架構(gòu)。06理解Spark的運(yùn)行架構(gòu)和工作流程。05了解Spark的概念和主要組件。0102能力目標(biāo)能夠獨(dú)立安裝和配置Spark。03能夠使用SparkJavaAPI編寫簡單的應(yīng)用程序。掌握MapReduce程序編寫步驟,能夠編寫簡單的應(yīng)用程序。思政目標(biāo)01.感受大數(shù)據(jù)處理與分析技術(shù)在現(xiàn)代生產(chǎn)生活中的巨大作用和價值,不斷增強(qiáng)創(chuàng)新意識、合作意識、愛國主義情懷和民族自豪感。02.自覺履行國家科技自立自強(qiáng)的使命擔(dān)當(dāng),面向世界科技前沿和國家重大需求,大膽創(chuàng)新,追求卓越,勇攀科技高峰。01大數(shù)據(jù)計算模式5.1.1常見大數(shù)據(jù)計算模式5.1大數(shù)據(jù)計算模式在以Hadoop為代表的大數(shù)據(jù)技術(shù)出現(xiàn)之前,數(shù)據(jù)處理與分析技術(shù)已經(jīng)有了長足的發(fā)展,如統(tǒng)計學(xué)、機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘等方法,它們在大數(shù)據(jù)時代也得到了新的發(fā)展,即實(shí)現(xiàn)方式從單機(jī)程序發(fā)展到了分布式程序,這樣一來,就可以充分利用計算機(jī)集群的并行處理能力。5.1.1常見大數(shù)據(jù)計算模式5.1大數(shù)據(jù)計算模式批處理計算批處理計算主要用于解決大規(guī)模數(shù)據(jù)的批量處理問題,是最為常見的數(shù)據(jù)處理需求。它在應(yīng)對大量、持久數(shù)據(jù)方面表現(xiàn)極為出色,因此經(jīng)常用于對歷史數(shù)據(jù)進(jìn)行分析,代表框架或平臺有MapReduce、Spark等。015.1.1常見大數(shù)據(jù)計算模式5.1大數(shù)據(jù)計算模式流計算傳統(tǒng)的MapReduce框架采用離線批處理的計算方式,主要針對靜態(tài)數(shù)據(jù)進(jìn)行批量處理,并不適合對動態(tài)的流數(shù)據(jù)進(jìn)行處理。流計算可以實(shí)時處理來自不同數(shù)據(jù)源的、連續(xù)到達(dá)的流數(shù)據(jù),經(jīng)過實(shí)時分析處理,給出有價值的分析結(jié)果,代表框架或平臺有Storm、Flink、Flume等。025.1.1常見大數(shù)據(jù)計算模式5.1大數(shù)據(jù)計算模式圖計算由于具有良好的表達(dá)能力,圖數(shù)據(jù)結(jié)構(gòu)被廣泛用來對元素間具有復(fù)雜聯(lián)系的數(shù)據(jù)進(jìn)行建模,如社交網(wǎng)絡(luò)、知識圖譜等。隨著圖數(shù)據(jù)規(guī)模的高速增長,復(fù)雜的業(yè)務(wù)需求不斷涌現(xiàn),處理這類大規(guī)模數(shù)據(jù),需要采用圖計算模式。035.1.1常見大數(shù)據(jù)計算模式5.1大數(shù)據(jù)計算模式卡內(nèi)基梅隆大學(xué)(CMU)GoogleSpark微軟PregelGraphLab和PowerGraphGraphX組件GraphEngine(原名Trinity)阿里巴巴GraphScope阿里巴巴GraphScope京東ReJoyGraph圖計算框架或平臺案例5.1.1常見大數(shù)據(jù)計算模式5.1大數(shù)據(jù)計算模式迭代計算迭代計算主要用于機(jī)器學(xué)習(xí)過程中需要處理全量數(shù)據(jù)并進(jìn)行多次迭代的計算,它利用計算機(jī)運(yùn)算速度快、適合做重復(fù)性操作的特點(diǎn),讓計算機(jī)對一組指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或步驟)時,都可以從變量的原值推出它的新值。045.1.1常見大數(shù)據(jù)計算模式5.1大數(shù)據(jù)計算模式查詢分析計算針對超大規(guī)模數(shù)據(jù)的存儲管理和查詢分析,需要提供實(shí)時或準(zhǔn)實(shí)時的響應(yīng),才能很好地滿足企業(yè)經(jīng)營管理的需求。05Google公司開發(fā)的Dremel就是適用于大數(shù)據(jù)環(huán)境下的一款可擴(kuò)展的、交互式的實(shí)時查詢系統(tǒng),它能做到在2~3s內(nèi)完成PB級別數(shù)據(jù)的查詢。此外,Cloudera公司參考Dremel系統(tǒng)開發(fā)了實(shí)時查詢引擎Impala,它提供結(jié)構(gòu)化查詢語言(SQL)語義,能快速查詢存儲在Hadoop的HDFS和HBase中的PB級大數(shù)據(jù)。例5.1.2離線計算與實(shí)時計算5.1大數(shù)據(jù)計算模式01離線計算離線計算是指在計算開始前要準(zhǔn)備好所有輸入數(shù)據(jù),且輸入數(shù)據(jù)不會發(fā)生變化,在此前提下進(jìn)行的解決一個問題后就要立即得到結(jié)果的計算模式。離線計算的特點(diǎn)①數(shù)據(jù)量巨大,保存時間長;②可進(jìn)行復(fù)雜的批量運(yùn)算;③數(shù)據(jù)在計算之前已經(jīng)完全到位,不會發(fā)生變化;④能夠方便地查詢計算結(jié)果。O5.1.2離線計算與實(shí)時計算5.1大數(shù)據(jù)計算模式實(shí)時計算02為了能夠滿足用戶在某些場景下的實(shí)時性要求,很多技術(shù)方案加入了實(shí)時計算。實(shí)時計算是指輸入數(shù)據(jù)實(shí)時產(chǎn)生,產(chǎn)生后立刻以序列化的方式逐個輸入并進(jìn)行處理。也就是說,它在計算開始前并不需要知道所有的輸入數(shù)據(jù)。5.1.2離線計算與實(shí)時計算5.1大數(shù)據(jù)計算模式實(shí)時計算的應(yīng)用場景百度、Google等搜索引擎通常會在用戶的查詢結(jié)果頁面中插入點(diǎn)擊付費(fèi)廣告,如圖所示。在該應(yīng)用場景中,搜索引擎需要在每次的查詢事件中動態(tài)估計查詢結(jié)果中不同廣告被點(diǎn)擊的可能性,然后在結(jié)果頁面中展示最有可能被點(diǎn)擊的廣告。5.1.2離線計算與實(shí)時計算5.1大數(shù)據(jù)計算模式實(shí)時計算的特點(diǎn)①數(shù)據(jù)連續(xù)輸入,不停地計算;②低延遲,響應(yīng)時間通常為秒級;③計算結(jié)果通常存儲在內(nèi)存數(shù)據(jù)庫中;④計算結(jié)果一般是截止某個時刻的即時匯總數(shù)據(jù),可能不是最優(yōu)解。5.1.2離線計算與實(shí)時計算5.1大數(shù)據(jù)計算模式離線計算和實(shí)時計算的區(qū)別離線計算的數(shù)據(jù)源一般存儲在HDFS中且數(shù)據(jù)量大,處理速度慢,延遲高,任務(wù)完成即可結(jié)束。實(shí)時計算的數(shù)據(jù)源一般是消息隊(duì)列(如Kafka,需要實(shí)時增加),處理速度快,延遲低,需要不間斷進(jìn)行(即7×24小時持續(xù)進(jìn)行)。02分布式并行編程模型MapReduce5.2分布式并行編程模型MapReduceMapReduce是一種并行編程模型,它極大地方便了分布式編程,使得編程人員在不深入理解分布式并行編程的情況下,也可以很容易地將自己的程序運(yùn)行在分布式系統(tǒng)上,完成對海量數(shù)據(jù)集的計算。5.2.1MapReduce簡介5.2分布式并行編程模型MapReduceMapReduce的概念MapReduce是Hadoop系統(tǒng)中最重要的計算引擎,它不僅直接支持交互式應(yīng)用、基于程序的應(yīng)用,還是Hive等組件的基礎(chǔ)。它主要用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算,可以并行執(zhí)行大規(guī)模數(shù)據(jù)處理任務(wù)。設(shè)計目標(biāo)讓不熟悉分布式并行編程的開發(fā)人員,將自己的程序輕松運(yùn)行在分布式系統(tǒng)上。5.2.1MapReduce簡介5.2分布式并行編程模型MapReduceMapReduce主要將數(shù)據(jù)處理任務(wù)拆分為Map(映射)和Reduce(規(guī)約)兩個任務(wù)。舉例來說,某個房屋銷售公司想要統(tǒng)計某月的銷售總額,老板就會讓總經(jīng)理報告銷售總額,而總經(jīng)理則會把統(tǒng)計任務(wù)分配給各地區(qū)經(jīng)理,讓他們各自統(tǒng)計其管轄區(qū)域的銷售總額,最后總經(jīng)理將各地區(qū)的銷售總額匯總后報告給老板。這就是一個典型的MapReduce任務(wù):總經(jīng)理將銷售額統(tǒng)計任務(wù)分給各地區(qū)經(jīng)理,相當(dāng)于Map任務(wù),而總經(jīng)理匯總各地區(qū)的銷售額,就是Reduce任務(wù)。5.2.1MapReduce簡介5.2分布式并行編程模型MapReduceMapReduce的特點(diǎn)3.高容錯性2.良好的可擴(kuò)展性1.開發(fā)簡單且易于實(shí)現(xiàn)如果集群中的某計算節(jié)點(diǎn)出現(xiàn)故障,使得作業(yè)執(zhí)行失敗,MapReduce可自動將作業(yè)分配到可用的計算節(jié)點(diǎn)上重新執(zhí)行。MapReduce具有良好的可擴(kuò)展性,這意味著當(dāng)集群計算資源不足時,可以通過動態(tài)增加節(jié)點(diǎn)的方式實(shí)現(xiàn)彈性計算。MapReduce在執(zhí)行分布式并行計算時,會將并行編程的煩瑣細(xì)節(jié)隱藏起來,如任務(wù)調(diào)度、負(fù)載均衡、失敗恢復(fù)等。優(yōu)點(diǎn)5.2.1MapReduce簡介5.2分布式并行編程模型MapReduceMapReduce的特點(diǎn)缺點(diǎn)0102031.計算局限MapReduce適用于海量數(shù)據(jù)的離線批處理,但不能像Oracle數(shù)據(jù)庫那樣在毫秒時間內(nèi)返回計算結(jié)果。2.性能局限Map任務(wù)與Reduce任務(wù)存在嚴(yán)格的依賴關(guān)系。Map任務(wù)的中間結(jié)果存儲在本地磁盤上,然后Reduce任務(wù)需要從磁盤上獲取Map計算的中間結(jié)果并將其作為輸入。3.應(yīng)用局限MapReduce不適合一般的Web應(yīng)用,因?yàn)檫@些應(yīng)用只是簡單的數(shù)據(jù)訪問且每次訪問請求所需要的資源非常少,同時還要滿足高并發(fā)訪問需求。5.2.2MapReduce的工作流程5.2分布式并行編程模型MapReduceMapReduce的工作流程分為5個階段,分別是輸入分片和數(shù)據(jù)格式化、Map過程、Shuffle過程、Reduce過程及結(jié)果輸出,如圖所示。5.2.2MapReduce的工作流程5.2分布式并行編程模型MapReduceMapReduce的簡易數(shù)據(jù)處理流程5.2.2MapReduce的工作流程5.2分布式并行編程模型MapReduce輸入分片和數(shù)據(jù)格式化01輸入分片是一個邏輯概念,它對輸入數(shù)據(jù)集的切分不是物理意義上的切分,而是對數(shù)據(jù)的邏輯結(jié)構(gòu)進(jìn)行切分。每個輸入分片存儲的并不是真實(shí)數(shù)據(jù),而是指向分片數(shù)據(jù)的引用。5.2.2MapReduce的工作流程5.2分布式并行編程模型MapReduceMap過程02Map過程利用map()函數(shù)來處理數(shù)據(jù),map()函數(shù)接收<key1,value1>形式的數(shù)據(jù)輸入。經(jīng)過map()函數(shù)處理后,獲得一系列<key2,value2>形式的輸出。5.2.2MapReduce的工作流程5.2分布式并行編程模型MapReduce①map()函數(shù)的輸出并不會立即寫入磁盤,MapReduce會為每個Map任務(wù)分配一個環(huán)形內(nèi)存緩沖區(qū)(bufferinmemory),用于存儲map()函數(shù)的輸出。②在將環(huán)形內(nèi)存緩沖區(qū)中的數(shù)據(jù)寫入磁盤之前,需要對數(shù)據(jù)進(jìn)行分區(qū)、排序和合并(可選)操作。③環(huán)形內(nèi)存緩沖區(qū)中的數(shù)據(jù)一旦達(dá)到閾值,一個后臺線程便開始把數(shù)據(jù)溢寫到本地磁盤的臨時文件(即溢寫文件)中。④由于此時Map任務(wù)并未結(jié)束,系統(tǒng)需要將所有溢寫文件中的數(shù)據(jù)進(jìn)行歸并(從磁盤到磁盤以分區(qū)排序來歸并數(shù)據(jù)),以生成一個大的溢寫文件(數(shù)據(jù)已分區(qū)且有序)。Shuffle過程03Map端的Shuffle過程。5.2.2MapReduce的工作流程5.2分布式并行編程模型MapReduce①在一個MapReduce作業(yè)中,通常會啟動多個Map任務(wù),并且由于每個Map任務(wù)處理的數(shù)據(jù)量不同,任務(wù)結(jié)束時間也不同。②Reduce任務(wù)將復(fù)制獲得的文件存放在自身所在節(jié)點(diǎn)的緩存中,當(dāng)緩存中的數(shù)據(jù)達(dá)到閾值,即需要溢寫到磁盤時,Reduce任務(wù)會將復(fù)制數(shù)據(jù)進(jìn)行歸并排序(MergeSort),生成溢寫文件。Shuffle過程03Reduce端的Shuffle過程5.2.2MapReduce的工作流程5.2分布式并行編程模型MapReduceReduce過程04Reduce任務(wù)接收歸并排序后的數(shù)據(jù)流,并對已有序的相同key的鍵值對調(diào)用一次reduce()函數(shù)。其中,Reduce任務(wù)的輸入是<key2,list(value2)>形式的中間結(jié)果,輸出的是<key3,value3>形式的計算結(jié)果。5.2.3MapReduce程序編寫步驟5.2分布式并行編程模型MapReduce01新建Mapper類新建的Mapper類需要繼承MapReduceAPI提供的Mapper類并重寫Mapper類中的map()方法。02新建Reducer類新建的Reducer類需要繼承MapReduceAPI提供的Reducer類并重寫Reducer類中的reduce()方法。5.2.3MapReduce程序編寫步驟5.2分布式并行編程模型MapReduce新建程序執(zhí)行主類程序執(zhí)行主類是MapReduce程序的入口類,主要用于啟動一個MapReduce作業(yè)。提交程序到集群提交程序之前需要啟動Hadoop集群,包括HDFS和YARN。0304基于MapReduce的二次排序編程(掃描二維碼見詳細(xì)步驟)5.2分布式并行編程模型MapReduce5.2.4實(shí)戰(zhàn)演練——MapReduce二次排序編程03分布式資源管理器YARN5.3.1YARN基本架構(gòu)及組件5.3分布式資源管理器YARNYARN集群架構(gòu)5.3.1YARN基本架構(gòu)及組件5.3分布式資源管理器YARN1.ResourceManager主要職責(zé)(1)接收來自客戶端(Client)的請求。(2)啟動和管理各個應(yīng)用程序的ApplicationMaster。(3)接收來自ApplicationMaster的資源申請,并為其分配Container。(4)管理NodeManager,接收來自NodeManager的資源和節(jié)點(diǎn)健康情況匯報。5.3.1YARN基本架構(gòu)及組件5.3分布式資源管理器YARN2.NodeManagerNodeManager是集群中每個節(jié)點(diǎn)上的資源和任務(wù)管理器,以后臺進(jìn)程的形式運(yùn)行。它會定時向ResourceManager匯報本節(jié)點(diǎn)上的資源(內(nèi)存、CPU)使用情況和各個Container的運(yùn)行狀態(tài),同時會接收并處理來自ApplicationMaster的Container啟動/停止等請求。NodeManager不會監(jiān)視任務(wù),它僅監(jiān)視Container中的資源使用情況。5.3.1YARN基本架構(gòu)及組件5.3分布式資源管理器YARN3.TaskTask是應(yīng)用程序的具體執(zhí)行任務(wù),一個應(yīng)用程序可能會有多個任務(wù)。例如:一個MapReduce程序可以有多個Map任務(wù)和多個Reduce任務(wù)。5.3.1YARN基本架構(gòu)及組件5.3分布式資源管理器YARN4.ContainerContainer是YARN中資源分配的基本單位,它封裝了CPU和內(nèi)存資源的一個容器,相當(dāng)于是一個Task運(yùn)行環(huán)境的抽象。從實(shí)現(xiàn)上看,Container是一個Java抽象類,定義了資源信息。應(yīng)用程序的Task會被發(fā)布到Container中運(yùn)行,從而限定Task使用的資源量。5.3.1YARN基本架構(gòu)及組件5.3分布式資源管理器YARN5.ApplicationMasterApplicationMaster是應(yīng)用程序管理者,主要負(fù)責(zé)應(yīng)用程序的管理,以后臺進(jìn)程的形式運(yùn)行。它為應(yīng)用程序向ResourceManager申請資源(CPU、內(nèi)存),并將資源分配給所管理應(yīng)用程序的Task。5.3.1YARN基本架構(gòu)及組件5.3分布式資源管理器YARN總的來說:ResourceManager管理整個集群,NodeManager管理集群中的單個節(jié)點(diǎn),ApplicationMaster管理單個應(yīng)用程序(集群中可能同時有多個應(yīng)用程序在運(yùn)行,每個應(yīng)用程序都有各自的ApplicationMaster)。5.3.2YARN的工作流程5.3分布式資源管理器YARNYARN集群中應(yīng)用程序的執(zhí)行流程5.3.2YARN的工作流程5.3分布式資源管理器YARN01.客戶端(Client)提交應(yīng)用程序(如MapReduce程序等)到ResourceManager。02.ResourceManager分配用于運(yùn)行ApplicationMaster的Container,然后再與NodeManager通信,要求它在該Container中啟動ApplicationMaster。ApplicationMaster啟動后,它將負(fù)責(zé)此應(yīng)用程序的整個生命周期。5.3.2YARN的工作流程5.3分布式資源管理器YARN03.ApplicationMaster向ResourceManager注冊(注冊后可以通過ResourceManager查看應(yīng)用程序的運(yùn)行狀態(tài))并請求運(yùn)行應(yīng)用程序各個Task所需的Container(資源請求是對一些Container的請求)。如果符合條件,ResourceManager會分配給ApplicationMaster所需的Container(表達(dá)為ContainerID和主機(jī)名)。04.ApplicationMaster請求NodeManager使用這些Container來運(yùn)行應(yīng)用程序的相應(yīng)Task(即將Task發(fā)布到指定的Container中運(yùn)行)。04分布式協(xié)調(diào)服務(wù)ZooKeeper5.4分布式協(xié)調(diào)服務(wù)ZooKeeperZooKeeper是一種分布式應(yīng)用程序協(xié)調(diào)服務(wù),主要用于解決分布式集群中應(yīng)用程序的一致性問題。它能提供類似文件系統(tǒng)的目錄節(jié)點(diǎn)樹方式的數(shù)據(jù)存儲,主要用途是維護(hù)和監(jiān)控所存數(shù)據(jù)的狀態(tài)變化,以實(shí)現(xiàn)對集群的管理。

ZooKeeper是一個分布式的、開源的協(xié)調(diào)服務(wù)框架,可為大型分布式系統(tǒng)提供高效且可靠的分布式協(xié)調(diào)服務(wù),廣泛應(yīng)用于Hadoop、HBase、Kafka等大型分布式開源系統(tǒng)。具體而言,它可以在集群的節(jié)點(diǎn)間進(jìn)行消息傳遞,協(xié)調(diào)集群中不同服務(wù)器進(jìn)程間的互斥和同步操作,從而保證集群節(jié)點(diǎn)間的數(shù)據(jù)一致性。5.4.1ZooKeeper簡介5.4分布式協(xié)調(diào)服務(wù)ZooKeeper

ZooKeeper是一種集中式的服務(wù),它將分布式應(yīng)用需要的服務(wù)抽離集中起來,形成一個擁有簡單接口的集中式的協(xié)調(diào)服務(wù),以某種形式運(yùn)行在分布式應(yīng)用程序中,提供維護(hù)配置信息和命名信息、分布式同步和組服務(wù)的功能。5.4.1ZooKeeper簡介5.4分布式協(xié)調(diào)服務(wù)ZooKeeper5.4.2ZooKeeper的應(yīng)用場景5.4分布式協(xié)調(diào)服務(wù)ZooKeeper統(tǒng)一命名服務(wù)01利用ZooKeeper中的樹形分層結(jié)構(gòu),可以把系統(tǒng)中的各種服務(wù)的名稱、地址及目錄信息存放在ZooKeeper中,需要的時候去ZooKeeper中讀取就可以了。5.4.2ZooKeeper的應(yīng)用場景5.4分布式協(xié)調(diào)服務(wù)ZooKeeper集群管理02ZooKeeper能夠很容易地實(shí)現(xiàn)集群管理的功能,如有多臺服務(wù)器組成一個服務(wù)集群,那么必須要有一個“總管”知道當(dāng)前集群中每臺機(jī)器的服務(wù)狀態(tài),一旦有服務(wù)器不能提供服務(wù),集群中其他服務(wù)器必須知道,從而做出調(diào)整,重新分配服務(wù)策略。當(dāng)增加一臺或多臺服務(wù)器時,同樣也必須讓“總管”知道。5.4.2ZooKeeper的應(yīng)用場景5.4分布式協(xié)調(diào)服務(wù)ZooKeeper分布式鎖03在一個分布式環(huán)境中,為了提高可靠性,集群的每臺服務(wù)器上都部署著同樣的服務(wù)。但是一個常見的問題就是,如果集群中的每臺服務(wù)器都進(jìn)行同一件事情的話,它們相互之間就要協(xié)調(diào),編程起來將非常復(fù)雜。這個時候可以使用分布式鎖,我們可以利用ZooKeeper來協(xié)調(diào)多個分布式進(jìn)程之間的活動,在某個時刻只讓一個服務(wù)去工作,當(dāng)這個服務(wù)出現(xiàn)問題的時候?qū)㈡i釋放,立即切換到另外的服務(wù)。5.4.2ZooKeeper集群的總體架構(gòu)5.4分布式協(xié)調(diào)服務(wù)ZooKeeper5.4.2ZooKeeper集群的總體架構(gòu)5.4分布式協(xié)調(diào)服務(wù)ZooKeeperZooKeeper集群由一組服務(wù)器(Server)節(jié)點(diǎn)組成,在這些服務(wù)器節(jié)點(diǎn)中有一個節(jié)點(diǎn)的角色為Leader,其他節(jié)點(diǎn)的角色通常為Follower。當(dāng)客戶端(Client)連接到ZooKeeper集群并執(zhí)行寫請求時,這些請求首先會被發(fā)送到Leader節(jié)點(diǎn)。Leader節(jié)點(diǎn)在接收到數(shù)據(jù)變更請求后,首先會將該變更寫入到本地磁盤以供恢復(fù)使用,當(dāng)所有的寫請求持久化到磁盤后,會將數(shù)據(jù)變更應(yīng)用到內(nèi)存中,以加快數(shù)據(jù)讀取速度,最后Leader節(jié)點(diǎn)上的數(shù)據(jù)變更會同步(廣播)到集群的其他Follower節(jié)點(diǎn)上。05基于內(nèi)存的大數(shù)據(jù)處理引擎Spark5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkSpark是基于內(nèi)存計算的大數(shù)據(jù)并行計算框架。它的基于內(nèi)存計算這一特性,提高了大數(shù)據(jù)環(huán)境下數(shù)據(jù)處理的實(shí)時性,同時保證了高容錯性和高可伸縮性,并允許用戶將Spark部署在大量廉價硬件上,形成集群,從而大大縮短了大數(shù)據(jù)處理時間。Spark的中間結(jié)果并沒有保存在HDFS中,而是存放在內(nèi)存中;Spark簡化了數(shù)據(jù)處理流程,從而避免了不必要的排序所帶來的開銷。5.5.1Spark簡介5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkSpark是一個針對超大數(shù)據(jù)集合的、低延遲的集群分布式計算系統(tǒng),它同時支持批處理和流計算。其最初由加州大學(xué)伯克利分校的AMPLab研發(fā),現(xiàn)已成為Apache軟件基金會的頂級項(xiàng)目之一。1Spark的概念5.5.1Spark簡介5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkSpark是由多個組件構(gòu)成的軟件棧其核心(SparkCore)是一個對由很多計算任務(wù)組成的、運(yùn)行在多個工作機(jī)器或一個計算集群上的應(yīng)用進(jìn)行調(diào)度、分發(fā)和監(jiān)控的計算引擎。Spark由4個主要組件組成,包括提供交互式數(shù)據(jù)查詢的SparkSQL、實(shí)時計算的SparkStreaming、機(jī)器學(xué)習(xí)的MLlib和圖處理的GraphX。2Spark的主要組件5.5.1Spark簡介5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkSpark的主要組件提供了類SQL的結(jié)構(gòu)化數(shù)據(jù)交互式操作。它由Shark(HiveonSpark)演化而來,Shark嚴(yán)重依賴于Hive,并對Hive進(jìn)行了改造。SparkSQL是基于Spark的上層應(yīng)用框架,它借助于Spark計算引擎的內(nèi)存處理模型,對數(shù)據(jù)流可實(shí)時處理,且能達(dá)到秒級延遲。SparkStreaming5.5.1Spark簡介5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkSpark的主要組件是Spark在機(jī)器學(xué)習(xí)領(lǐng)域的上層應(yīng)用框架,它充分利用了迭代計算的特點(diǎn)。MLlib支持多種機(jī)器學(xué)習(xí)算法,如邏輯回歸、支持向量機(jī)、隨機(jī)森林、貝葉斯網(wǎng)絡(luò)、K-Means等,廣泛應(yīng)用于大數(shù)據(jù)預(yù)測、推薦和模式識別等方向。MLlibGraphXGraphX擴(kuò)展了Spark彈性分布式數(shù)據(jù)集(resilientdistributeddataset,RDD)的抽象,其核心為分布式彈性屬性圖(resilientdistributedpropertygraph,RDPG),即點(diǎn)和邊都帶有屬性的有向多重圖。5.5.2Spark與Hadoop對比分析5.5基于內(nèi)存的大數(shù)據(jù)處理引擎Spark

Hadoop被創(chuàng)建為處理大量現(xiàn)有數(shù)據(jù)的引擎,它具有較低的抽象級別,允許執(zhí)行復(fù)雜的操作,但可能導(dǎo)致學(xué)習(xí)和管理困難。

Spark更容易,更快捷,具有許多方便的高級工具和功能,可以簡化工作。Spark與Hadoop主要在抽象層次上有所不同5.5.2Spark與Hadoop對比分析5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkHSHadoop具有分布式存儲、開發(fā)簡單且可擴(kuò)展等優(yōu)勢,但存在響應(yīng)時間長、不能與客戶實(shí)時共享、不能處理流式數(shù)據(jù)等問題。Spark是一種與Hadoop相似的開源計算框架,是由加州大學(xué)伯克利分校AMPLab開發(fā)的基于內(nèi)存的分布式計算框架,支持批處理、迭代計算、內(nèi)存計算、圖處理等計算模式。兩者各具優(yōu)勢,但不能相互替代。5.5.2Spark與Hadoop對比分析5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkHadoop與Spark都是并行計算,且都是用MapReduce原理模型進(jìn)行計算與Hadoop開發(fā)語言不同的是,Spark是由Scala語言編寫而成。Scala是一種函數(shù)式編寫語言,是運(yùn)行在JVM(Java虛擬機(jī))上的高級靜態(tài)語言。Spark支持的語言更為豐富,包括Scala、Java、Python和R等。Spark沒有提供文件系統(tǒng),可以使用Hadoop的HDFS或者其他云數(shù)據(jù)平臺進(jìn)行數(shù)據(jù)存儲,但是一般選擇HDFS。5.5.2Spark與Hadoop對比分析5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkSHadoop中對于數(shù)據(jù)計算提供了Map和Reduce兩個操作。HSpark提供了map、flatMap、groupByKey、filter等算子。5.5.3Spark的運(yùn)行架構(gòu)和工作流程5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkRDD彈性分布式數(shù)據(jù)集(resilientdistributeddataset)的簡稱,是分布式內(nèi)存的一個抽象概念,它提供了一種高度受限的共享內(nèi)存模型。12Spark的運(yùn)行架構(gòu)

DAG有向無環(huán)圖(directedacyclicgraph)的簡稱,反映RDD之間的依賴關(guān)系。5.5.3Spark的運(yùn)行架構(gòu)和工作流程5.5基于內(nèi)存的大數(shù)據(jù)處理引擎SparkExecutor運(yùn)行在工作節(jié)點(diǎn)(WorkerNode)上的一個進(jìn)程,負(fù)責(zé)運(yùn)行任務(wù),并為應(yīng)用程序存儲數(shù)據(jù)。34Spark的運(yùn)行架構(gòu)

應(yīng)用(Application)用戶編寫的Spark應(yīng)用程序。運(yùn)行于Spark上的應(yīng)用,由集群上的一個DriverProgram(包含Main方法的程序)、一個ClusterManager(集群管理器)和多個WorkerNode上的Executor組成。5.5.3Spark的運(yùn)行架構(gòu)和工作流程5.5基于內(nèi)存的大數(shù)據(jù)處理引擎Spark任務(wù)(Task)運(yùn)行在Executor上的工作

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論