




已閱讀5頁(yè),還剩67頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.,之Spark,胡楠,云計(jì)算技術(shù)和大數(shù)據(jù),.,綱要,Spark架構(gòu),3,BDAS簡(jiǎn)介,4,函數(shù)式編程簡(jiǎn)介,7,Spark應(yīng)用實(shí)例,6,Spark安裝部署,5,.,一、Spark綜述,Spark是基于內(nèi)存計(jì)算的大數(shù)據(jù)并行計(jì)算框架。Spark基于內(nèi)存計(jì)算,提高了在大數(shù)據(jù)環(huán)境下數(shù)據(jù)處理的實(shí)時(shí)性,同時(shí)保證了高容錯(cuò)性和高可伸縮性,允許用戶將Spark部署在大量廉價(jià)硬件之上,形成集群。Spark于2009年誕生于加州大學(xué)伯克利分校AMPLab。并且于2010年開(kāi)源。2013年6月Spark進(jìn)入Apache孵化器。目前,已經(jīng)成為Apache軟件基金會(huì)旗下的頂級(jí)開(kāi)源項(xiàng)目。,/matei/,Mataizaharia,.,一、Spark綜述,Spark相比HadoopMapRedue的優(yōu)勢(shì)如下:1、中間結(jié)果輸出基于MapReduce的計(jì)算模型會(huì)將中間結(jié)果序列化到磁盤(pán)上。而Spark將執(zhí)行模型抽象為通用的有向無(wú)環(huán)圖執(zhí)行計(jì)劃。且可以將中間結(jié)果緩存內(nèi)存中。2、數(shù)據(jù)格式和內(nèi)存布局Spark抽象出分布式內(nèi)存存儲(chǔ)結(jié)構(gòu)RDD,進(jìn)行數(shù)據(jù)存儲(chǔ)。Spark能夠控制數(shù)據(jù)在不同節(jié)點(diǎn)上的分區(qū),用戶可以自定義分區(qū)策略。,.,一、Spark綜述,3、執(zhí)行策略MapReduce在數(shù)據(jù)shuffle之前總是花費(fèi)大量時(shí)間來(lái)排序。Spark支持基于Hash的分布式聚合,在需要的時(shí)候再進(jìn)行實(shí)際排序。4、任務(wù)調(diào)度的開(kāi)銷(xiāo)MapReduce上的不同作業(yè)在同一個(gè)節(jié)點(diǎn)運(yùn)行時(shí),會(huì)各自啟動(dòng)一個(gè)JVM。而Spark同一節(jié)點(diǎn)的所有任務(wù)都可以在一個(gè)JVM上運(yùn)行。,.,一、Spark綜述,Spark生態(tài)隨著B(niǎo)DAS的完善,已經(jīng)成型。Spark全面兼容Hadoop的數(shù)據(jù)持久層。從而讓把計(jì)算任務(wù)從原來(lái)的MapReduce計(jì)算任務(wù)遷移到Spark中更加簡(jiǎn)單。目前Spark的工業(yè)應(yīng)用在國(guó)內(nèi)已經(jīng)大范圍落地。包括BAT在內(nèi)的一眾互聯(lián)網(wǎng)公司都建立了自己的Spark集群,.,綱要,Spark架構(gòu),3,BDAS簡(jiǎn)介,4,函數(shù)式編程簡(jiǎn)介,7,Spark應(yīng)用實(shí)例,6,Spark安裝部署,5,.,二、Spark關(guān)鍵技術(shù),RDD的全稱是彈性分布式數(shù)據(jù)集(resilientdistributeddataset)是Spark的核心數(shù)據(jù)模型,RDD是Spark中待處理的數(shù)據(jù)的抽象,它是邏輯中的實(shí)體。對(duì)于使用者來(lái)說(shuō),你得到的數(shù)據(jù)操作接口就是RDD,在對(duì)RDD進(jìn)行處理的時(shí)候不需要考慮底層的分布式集群,就像在單機(jī)上一樣即可,這也正是Spark的優(yōu)勢(shì)之一。,.,二、Spark關(guān)鍵技術(shù),從Hadoop文件系統(tǒng)輸入(比如HDFS)創(chuàng)建。從父RDD轉(zhuǎn)換得到新的RDD。將數(shù)組或者集合這樣的數(shù)據(jù)結(jié)構(gòu)并行化,轉(zhuǎn)化成RDD。通過(guò)cache()函數(shù)將計(jì)算后的RDD緩存到內(nèi)存中。,.,二、Spark關(guān)鍵技術(shù),從邏輯上來(lái)看,RDD就是數(shù)據(jù)。而實(shí)際上,從物理上來(lái)看,RDD是一種分布式內(nèi)存的抽象。Spark中的數(shù)據(jù)實(shí)際上是像HDFS那樣分塊存儲(chǔ),.,二、Spark關(guān)鍵技術(shù),分區(qū)列表計(jì)算每個(gè)分片的函數(shù)對(duì)父RDD的依賴對(duì)“鍵值對(duì)”數(shù)據(jù)類型RDD的分區(qū)器,控制分區(qū)策略和分區(qū)數(shù)。每個(gè)數(shù)據(jù)分區(qū)的地址列表。,所以RDD實(shí)際上只是一個(gè)元數(shù)據(jù)對(duì)象,用于將對(duì)數(shù)據(jù)集的操作映射到物理存儲(chǔ)之上。RDD的重要內(nèi)部屬性如下:,.,二、Spark關(guān)鍵技術(shù),RDD中的依賴關(guān)系RDD之間的依賴關(guān)系可以分為兩類:窄依賴:每個(gè)父RDD的分區(qū)都至多被一個(gè)子RDD的分區(qū)使用;窄依賴允許在單個(gè)集群節(jié)點(diǎn)上流水線式執(zhí)行,這個(gè)節(jié)點(diǎn)可以計(jì)算所有父級(jí)分區(qū)。在窄依賴中,節(jié)點(diǎn)失敗后的恢復(fù)更加高效。因?yàn)橹挥衼G失的父級(jí)分區(qū)需要重新計(jì)算,并且這些丟失的父級(jí)分區(qū)可以并行地在不同節(jié)點(diǎn)上重新計(jì)算。寬依賴:多個(gè)子RDD的分區(qū)依賴一個(gè)父RDD的分區(qū)。寬依賴需要所有的父RDD數(shù)據(jù)可用并且數(shù)據(jù)已經(jīng)通過(guò)類MapReduce的操作shuffle完成。在寬依賴的繼承關(guān)系中,單個(gè)失敗的節(jié)點(diǎn)可能導(dǎo)致一個(gè)RDD的所有先祖RDD中的一些分區(qū)丟失,導(dǎo)致計(jì)算的重新執(zhí)行。,.,二、Spark關(guān)鍵技術(shù),寬依賴和窄依賴的樣例。每一個(gè)方框表示一個(gè)RDD,其內(nèi)的陰影矩形表示RDD的分區(qū)。,.,二、Spark關(guān)鍵技術(shù),TransformationTransformation操作是延遲計(jì)算的,也就是說(shuō)從一個(gè)RDD轉(zhuǎn)換生成另一個(gè)RDD的轉(zhuǎn)換操作不是立即執(zhí)行的,而是需要等到Action操作是才真正出發(fā)運(yùn)算。ActionAction算子會(huì)觸發(fā)Spark提交作業(yè),并將數(shù)據(jù)輸出到Spark系統(tǒng)。,RDD操作算子,RDD中的操作算子可以分為兩類:Transformation(變換)算子與Action(行動(dòng))算子。,.,二、Spark關(guān)鍵技術(shù),RDD算子操作舉例如下:,Valline=sc.textFile(Test.txt)line.map(n=Integer.parseInt(n)*Integer.parseInt(n).reduce(_+_),.,二、Spark關(guān)鍵技術(shù),.,二、Spark關(guān)鍵技術(shù),基于血統(tǒng)的容錯(cuò)機(jī)制(lineage):在spark中RDD具有不變性,在數(shù)據(jù)處理過(guò)程中,spark通過(guò)lineage圖記錄了各個(gè)RDD之間的變換關(guān)系,一旦某個(gè)數(shù)據(jù)處理過(guò)程出現(xiàn)錯(cuò)誤,spark可以根據(jù)lineage圖快速進(jìn)行容錯(cuò)恢復(fù)。特別是對(duì)于map操作來(lái)說(shuō),當(dāng)某個(gè)節(jié)點(diǎn)的任務(wù)失敗,spark只需要重新計(jì)算相應(yīng)分區(qū)的數(shù)據(jù),而不必將整個(gè)任務(wù)重新計(jì)算。在很多分布式數(shù)據(jù)處理系統(tǒng)中通過(guò)備份來(lái)進(jìn)行容錯(cuò),相比于這種會(huì)導(dǎo)致巨大存儲(chǔ)消耗的容錯(cuò)方式,spark的lineage圖只需要十幾kb的存儲(chǔ)空間。Spark允許用戶將數(shù)據(jù)cache下來(lái),對(duì)于將來(lái)可能頻繁使用的某個(gè)計(jì)算結(jié)果,將這個(gè)RDDcache下來(lái)是明智的選擇。,.,二、Spark關(guān)鍵技術(shù),檢查點(diǎn)支持:雖然lineage可用于錯(cuò)誤后RDD的恢復(fù),但對(duì)于很長(zhǎng)的lineage的RDD來(lái)說(shuō),這樣的恢復(fù)耗時(shí)較長(zhǎng)。由此,可以考慮將某些RDD進(jìn)行檢查點(diǎn)操作(Checkpoint)保存到穩(wěn)定存儲(chǔ)上。Spark當(dāng)前提供了為RDD設(shè)置檢查點(diǎn)操作的API,讓用戶自行決定需要為哪些數(shù)據(jù)設(shè)置檢查點(diǎn)操作。由于RDD的只讀特性使得比常用的共享內(nèi)存更容易做checkpoint.由于不需要關(guān)心一致性的問(wèn)題,RDD的寫(xiě)出可在后臺(tái)進(jìn)行,而不需要程序暫停或進(jìn)行分布式快照,.,綱要,BDAS簡(jiǎn)介,4,Scala簡(jiǎn)介,7,Spark應(yīng)用實(shí)例,6,Spark安裝部署,5,.,三、Spark體系架構(gòu),MasterWorker,.,三、Spark體系架構(gòu),.,三、Spark體系架構(gòu),Master進(jìn)程和Worker進(jìn)程,對(duì)整個(gè)集群進(jìn)行控制。Driver程序是應(yīng)用邏輯執(zhí)行的起點(diǎn),負(fù)責(zé)作業(yè)的調(diào)度,即Task任務(wù)的分發(fā)Worker用來(lái)管理計(jì)算節(jié)點(diǎn)和創(chuàng)建Executor并行處理任務(wù)。Executor對(duì)相應(yīng)數(shù)據(jù)分區(qū)的任務(wù)進(jìn)行處理。,.,三、Spark體系架構(gòu),Client提交應(yīng)用,Master找到一個(gè)Worker啟動(dòng)DriverDriver向Master或者資源管理器申請(qǐng)資源,之后將應(yīng)用轉(zhuǎn)化為RDDGraphDAGScheduler將RDDGraph轉(zhuǎn)化為Stage的有向無(wú)環(huán)圖提交給TaskSchedulerTaskScheduler提交任務(wù)給Executor執(zhí)行。,.,綱要,Spark架構(gòu),3,Scala簡(jiǎn)介,7,Spark應(yīng)用實(shí)例,6,Spark安裝部署,5,.,四、BDAS簡(jiǎn)介,目前,Spark已經(jīng)發(fā)展成為包含眾多子項(xiàng)目的大數(shù)據(jù)計(jì)算平臺(tái)。伯克利將Spark的整個(gè)生態(tài)系統(tǒng)稱為伯克利數(shù)據(jù)分析棧(BDAS),目前包含四個(gè)已經(jīng)比較成熟的組件。,.,四、BDAS簡(jiǎn)介,談到SparkSQL:首先需要從Shark說(shuō)起。,.,四、BDAS簡(jiǎn)介,為了給熟悉RDBMS但又不理解MapReduce的技術(shù)人員提供快速上手的工具,Hive應(yīng)運(yùn)而生,它是當(dāng)時(shí)唯一運(yùn)行在Hadoop上的SQL-on-Hadoop工具。但是MapReduce計(jì)算過(guò)程中大量的中間磁盤(pán)落地過(guò)程消耗了大量的I/O,降低的運(yùn)行效率,為了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具開(kāi)始產(chǎn)生。其中就包括Shark,.,四、BDAS簡(jiǎn)介,Shark基于Hive修改了內(nèi)存管理、物理計(jì)劃、執(zhí)行三個(gè)模塊,并使之能運(yùn)行在Spark引擎上,從而使得SQL查詢的速度得到10-100倍的提升,.,四、BDAS簡(jiǎn)介,Shark缺陷:Shark對(duì)于Hive的太多依賴,制約了Spark的OneStackRuleThemAll的既定方針,制約了Spark各個(gè)組件的相互集成SparkSQL拋棄原有Shark的代碼,汲取了Shark的一些優(yōu)點(diǎn),如內(nèi)存列存儲(chǔ)(In-MemoryColumnarStorage)、Hive兼容性等,重新開(kāi)發(fā)了SparkSQL代碼;由于擺脫了對(duì)Hive的依賴性,SparkSQL無(wú)論在數(shù)據(jù)兼容、性能優(yōu)化、組件擴(kuò)展方面都得到了極大的方便,.,四、BDAS簡(jiǎn)介,*數(shù)據(jù)兼容方面不但兼容Hive,還可以從RDD、JSON文件中獲取數(shù)據(jù)*性能優(yōu)化方面采取In-MemoryColumnarStorage、byte-codegeneration等優(yōu)化技術(shù)*組件擴(kuò)展方面無(wú)論是SQL的語(yǔ)法解析器、分析器還是優(yōu)化器都可以重新定義,進(jìn)行擴(kuò)展。,.,四、BDAS簡(jiǎn)介,SparkSQL是一個(gè)用于結(jié)構(gòu)化的數(shù)據(jù)處理的模塊。SparkSQL和SparkRDDAPI的區(qū)別如下:1、SparkSQL的接口提供更多的關(guān)于數(shù)據(jù)以及操作的結(jié)構(gòu)方面的信息。2、SparkSQL會(huì)利用這些信息對(duì)數(shù)據(jù)操作進(jìn)行額外的優(yōu)化??梢酝ㄟ^(guò)三種方式與SparkSQL進(jìn)行交互:SQL、DataFramesAPI、DatasetsAPI這三種API/語(yǔ)言最終都同一個(gè)執(zhí)行引擎完成操作。所以你可以選擇任何一種舒服的方式來(lái)書(shū)寫(xiě)自己的數(shù)據(jù)處理邏輯。,.,四、BDAS簡(jiǎn)介,SparkSQL的使用方式之一是用來(lái)執(zhí)行SQL查詢。特性如下:同時(shí)支持標(biāo)準(zhǔn)的SQL語(yǔ)句和HiveQL能夠從Hive表中讀取數(shù)據(jù)(需要進(jìn)行配置)查詢結(jié)果將返回一個(gè)DataFrame支持在交互式環(huán)境中使用SQL語(yǔ)句,.,四、BDAS簡(jiǎn)介,DataFrame用來(lái)描述結(jié)構(gòu)化的數(shù)據(jù)。Spark官方給出的定義為:ADataFrameisadistributedcollectionofdataorganizedintonamedcolumns.DataFrame概念上等同于關(guān)系型數(shù)據(jù)庫(kù)中的一個(gè)表或者R/Python語(yǔ)言中的dataframe,不同的是Spark提供更豐富的優(yōu)化。DataFrame可從多種資源中構(gòu)建:結(jié)構(gòu)化的數(shù)據(jù)文件、hive中的表、外部數(shù)據(jù)庫(kù)、現(xiàn)有的RDD等。DataFrame提供了豐富的API。,.,四、BDAS簡(jiǎn)介,SparkStreaming是建立在Spark上的實(shí)時(shí)計(jì)算框架,通過(guò)它提供的豐富的API、基于內(nèi)存的高速執(zhí)行引擎,用戶可以結(jié)合流式、批處理和交互試查詢應(yīng)用。SparkStreaming通過(guò)將流數(shù)據(jù)按指定時(shí)間片累積為RDD,然后將每個(gè)RDD進(jìn)行批處理,進(jìn)而實(shí)現(xiàn)大規(guī)模的流數(shù)據(jù)處理。其吞吐量能夠超越現(xiàn)有主流流處理框架Storm,并提供豐富的API用于流數(shù)據(jù)計(jì)算。,.,四、BDAS簡(jiǎn)介,SparkStreaming是將流式計(jì)算分解成一系列短小的批處理作業(yè)。把SparkStreaming的輸入數(shù)據(jù)按照batchsize(如1秒)分成一段一段的數(shù)據(jù),每一段數(shù)據(jù)都轉(zhuǎn)換成Spark中的RDD將SparkStreaming中對(duì)DStream的Transformation操作變?yōu)獒槍?duì)Spark中對(duì)RDD的Transformation操作將RDD經(jīng)過(guò)操作變成中間結(jié)果保存在內(nèi)存中。整個(gè)流式計(jì)算根據(jù)業(yè)務(wù)的需求可以對(duì)中間的結(jié)果進(jìn)行疊加,或者存儲(chǔ)到外部設(shè)備。,.,四、BDAS簡(jiǎn)介,.,四、BDAS簡(jiǎn)介,處理模型,延遲:Storm處理的是每次傳入的一個(gè)事件,而SparkStreaming是處理某個(gè)時(shí)間段窗口內(nèi)的事件流。容錯(cuò)、數(shù)據(jù)保證:SparkStreaming使用Spark的血統(tǒng)容錯(cuò)機(jī)制,Storm單獨(dú)跟蹤每條記錄,在錯(cuò)誤恢復(fù)時(shí)可能出錯(cuò)。另一方面,SparkStreaming只需要在批級(jí)別進(jìn)行跟蹤處理,因此即便一個(gè)節(jié)點(diǎn)發(fā)生故障,也可以有效地保證每個(gè)batch將完全被處理一次。簡(jiǎn)而言之,如果你需要秒內(nèi)的延遲,Storm是一個(gè)不錯(cuò)的選擇,而且沒(méi)有數(shù)據(jù)丟失。如果你需要有狀態(tài)的計(jì)算,而且要完全保證每個(gè)事件只被處理一次,SparkStreaming則更好。,.,四、BDAS簡(jiǎn)介,Graphx是Spark生態(tài)中的非常重要的組件,可以對(duì)圖這種數(shù)據(jù)結(jié)構(gòu)進(jìn)行并行的處理計(jì)算。GraphX基于BSP(整體同步并行計(jì)算模型)模型,在Spark之上封裝類似Pregel(google的圖計(jì)算框架)的接口。GraphX通過(guò)引入*ResilientDistributedPropertyGraph*擴(kuò)展了SparkRDD這種抽象數(shù)據(jù)結(jié)構(gòu),.,四、BDAS簡(jiǎn)介,.,四、BDAS簡(jiǎn)介,graphx借鑒powerGraph,使用的是vertexcut(點(diǎn)分割)方式存儲(chǔ)圖。,優(yōu)點(diǎn):任何一條邊只會(huì)出現(xiàn)在一臺(tái)機(jī)器上,對(duì)邊的操作進(jìn)行起來(lái)比較簡(jiǎn)單。網(wǎng)絡(luò)開(kāi)銷(xiāo)小,缺點(diǎn):每個(gè)點(diǎn)可能要存儲(chǔ)多份,更新點(diǎn)要有數(shù)據(jù)同步開(kāi)銷(xiāo)。,.,四、BDAS簡(jiǎn)介,1、對(duì)Graph視圖的所有操作,最終都會(huì)轉(zhuǎn)換成其關(guān)聯(lián)的Table視圖的RDD操作來(lái)完成。2、兩種視圖底層共用的物理數(shù)據(jù),由RDDVertex-Partition和RDDEdgePartition這兩個(gè)RDD組成。3、圖的分布式存儲(chǔ)采用點(diǎn)分割模式,而且使用partitionBy方法,由用戶指定不同的劃分策略。,.,四、BDAS簡(jiǎn)介,MLlib是構(gòu)建在Spark上的分布式機(jī)器學(xué)習(xí)庫(kù),充分利用了Spark的內(nèi)存計(jì)算和適合迭代型計(jì)算的優(yōu)勢(shì),使性能大幅提升,同時(shí)Spark算子豐富的表現(xiàn)力,讓大規(guī)模機(jī)器學(xué)習(xí)的算法開(kāi)發(fā)不再?gòu)?fù)雜。MLlib包含了分類、回歸、聚類、協(xié)同過(guò)濾、數(shù)據(jù)降維等基本機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)。使用者也能夠根據(jù)自己的業(yè)務(wù)需要,在這些算法之上進(jìn)行進(jìn)一步開(kāi)發(fā)。,.,綱要,Spark架構(gòu),3,BDAS簡(jiǎn)介,4,函數(shù)式編程簡(jiǎn)介,7,Spark應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn),6,.,五、Spark安裝部署,Spark有三種部署模式:1、standalone2、SparkonYarn3、SparkonMesos,.,五、Spark安裝部署,自帶完整的服務(wù),包括資源調(diào)度和文件管理都由自己完成,可單獨(dú)部署到一個(gè)集群中。無(wú)需依賴任何其他資源管理系統(tǒng)。目前Spark在standalone模式下是沒(méi)有任何單點(diǎn)故障問(wèn)題的,這是借助zookeeper實(shí)現(xiàn)的,思想類似于Hbasemaster單點(diǎn)故障解決方案。,.,五、Spark安裝部署,Mesos是AMPlab開(kāi)發(fā)的資源調(diào)度器,Spark可以在其上以插件的形式運(yùn)行。正因?yàn)镸esos與Spark同出一源,所以Spark運(yùn)行在Mesos更加靈活,自然。SparkOnMesos有兩種調(diào)度模式:粗粒度模式(Coarse-grainedMode)細(xì)粒度模式(Fine-grainedMode),.,五、Spark安裝部署,這是一種最有前景的部署模式。但限于YARN自身的發(fā)展,目前僅支持粗粒度模式(Coarse-grainedMode)。,YARN上的Container資源是不可以動(dòng)態(tài)伸縮的,一旦Container啟動(dòng)之后,可使用的資源不能再發(fā)生變化,不過(guò)這個(gè)已經(jīng)在YARN計(jì)劃中了。,.,五、Spark安裝部署,給大家演示SparkonYarn的部署過(guò)程。部署在最簡(jiǎn)單的集群之上:兩個(gè)節(jié)點(diǎn),一個(gè)master和一個(gè)slave服務(wù)器操作系統(tǒng)是ubuntu12Hadoop版本:2.2.0Spark版本:1.0.2JDK版本:1.7Scala版本:2.10.4Master:31Slave:25,.,五、Spark安裝部署,首先安裝Scala:下載地址:/download/下載完成后將Scala-2.10.4.tgz上傳至linux主機(jī)中,解壓:tar-zxvfScala-2.10.4.tgz-C/cloud/配置環(huán)境變量:在/etc/profile文件中添加:exportSCALA_HOME=/cloud/scala-2.10.4exportPATH=$SCALA_HOME/bin:$PATH保存退出,source/etc/profile使配置生效。,.,五、Spark安裝部署,安裝Spark進(jìn)入官網(wǎng)下載Spark程序包,下載地址:/downloads.html下載spark-1.0.2-bin-hadoop2.tgz解壓:tar-zxvfspark-1.0.2-bin-hadoop2.tgz-C/cloud接下來(lái)修改Spark的配置文件,這里對(duì)Spark進(jìn)行簡(jiǎn)單配置,.,五、Spark安裝部署,1、修改conf/spark-env.sh,在文件中添加以下參數(shù):exportSCALA_HOME=/cloud/scala-2.10.4exportJAVA_HOME=/cloud/jdk1.7.0_80exportSPARK_WORKER_MEMORY=6gexportSPARK_MASTER_IP=31exportMASTER=spark:/31:70772、修改conf/slaves文件:本次示例集群有兩個(gè)節(jié)點(diǎn),一個(gè)master節(jié)點(diǎn)和一個(gè)slave1節(jié)點(diǎn)。所以在slaves文件中只需要添加:slave1,.,五、Spark安裝部署,接下來(lái)同步至slave節(jié)點(diǎn):首先,同步scala。scp-r/cloud/scala-2.10.4usernamemaster:/cloud然后是spark:scp-r/cloud/spark-1.0.2-bin-hadoop2/usernamemaster:/cloud/最后修改slave1上的/etc/profile文件和master節(jié)點(diǎn)一致。記得source/etc/profile。提示:如果有多個(gè)從節(jié)點(diǎn),這樣同步會(huì)很麻煩,可以用pssh批量操作。,.,五、Spark安裝部署,啟動(dòng)Spark首先啟動(dòng)Hadoop:Start-all.sh然后啟動(dòng)Sparkcd/cloud/spark-1.0.2-bin-hadoop2/sbin./start-all.sh正常情況下,master節(jié)點(diǎn)會(huì)出現(xiàn)master進(jìn)程,可以用jps查看:,#jps23489Jps1258Worker1364DataNode24587NodeManager,#jps23526Jps2112Master7235NameNode7598SecondaryNameNode7569ResourceManagerworker節(jié)點(diǎn)會(huì)有worker進(jìn)程:,.,綱要,Spark架構(gòu),3,BDAS簡(jiǎn)介,4,函數(shù)式編程簡(jiǎn)介,7,Spark安裝部署,5,.,六、Spark應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn),Wordcount相當(dāng)于大數(shù)據(jù)應(yīng)用程序中的“HelloWorld”本次演示的WordCount是在eclipse下編寫(xiě)目前大部分的Scala開(kāi)發(fā)者都比較推崇IntelliJIDEA。如果電腦配置還不錯(cuò)的話,推薦用這個(gè)IDEA.以上開(kāi)發(fā)工具都可以在Scala官網(wǎng)找到下載鏈接/,.,六、Spark應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn),首先FIle-New-Scalaproject:新建一個(gè)Scala工程,名稱就叫TestSpark_01好了。JRE選擇1.7/1.8都可以。,然后在工程中的src文件夾上面右擊-new-Package,建立一個(gè)包。最后在包上面右擊-New-ScalaObject,這里要注意一下,選擇的是ScalaObject,而不是ScalaClass。,.,六、Spark應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn),注意在寫(xiě)代碼之前一定要先導(dǎo)入相關(guān)的依賴。首先要將工程中自動(dòng)生成的Scalalibrarycontainer文件夾刪除,否則工程會(huì)由于Scala版本沖突出現(xiàn)錯(cuò)誤。然后在Spark安裝目錄的lib目錄下找到spark-assembly-1.3.0-hadoop2.3.0.jar這個(gè)文件,以“spark-assembly-”開(kāi)頭,后面的因版本而異。這個(gè)就是Spark程序的依賴jar包。在工程上右擊,新建一個(gè)名為lib的文件夾,將jar包復(fù)制過(guò)來(lái),然后在jar包上右擊-buildpath-addtobuildpath即可。,.,六、Spark應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn),1.packagecn.hunan2.3.importorg.apache.spark._4.importorg.apache.spark.SparkContext._5.6.objectWordCount7.defmain(args:ArrayString)8.valconf=newSparkConf()9.valsc=newSparkContext(conf)10.valline=sc.textFile(args(0)11.valresult=line.flatMap(_.split(a-zA-Z+).map(_,1).reduceByKey(_+_)13.result.saveAsTextFile(args(1)14.sc.stop()15.16.,.,六、Spark應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn),接下來(lái)就可以導(dǎo)出jar包了。在WordCount.Scala文件上右擊-Export,然后選擇JARfile,包名為WC.jar,存放在E:myjar目錄下。接下來(lái)需要把Jar包上傳至Spark集群。我用的是SecureCRT這個(gè)工具,用這個(gè)工具鏈接master節(jié)點(diǎn)后,按alt+p即可調(diào)出SFTP文件傳輸窗口。,.,六、Spark應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn),在HDFS上傳一個(gè)測(cè)試文本,用于wordcount。hadoopfs-putJane1.txt/Spark/Jane1.txt,切換到目錄SPARK_HOME/bin目錄下:在linuxshell中執(zhí)行以下命令:./spark-submit-classcn.hunan.WordCount-masteryarn/HunanJar/WC.jar/Spark/Jane1.txt/Spark/out,.,六、Spark應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn),等待執(zhí)行結(jié)束后就可以看到在HDFS:/Spark/out目錄下生成了以下文件:,.,七、函數(shù)式編程簡(jiǎn)介,Scala是Spark的原生語(yǔ)言。而Spark又是一個(gè)開(kāi)源項(xiàng)目,開(kāi)源項(xiàng)目一般是免費(fèi)供大家使用,源代碼也是完全公開(kāi)。這是開(kāi)源的優(yōu)勢(shì)。但是開(kāi)源軟件正因?yàn)槭敲赓M(fèi)的,所以在遇到問(wèn)題的時(shí)候,軟件作者并沒(méi)有義務(wù)為你解決問(wèn)題,如果用的是收費(fèi)的商業(yè)軟件,就有很多的售后支持。所以,對(duì)于開(kāi)源使用者來(lái)說(shuō),了解源碼是必須要做的功課。而且這些源碼都是世界頂尖的程序猿所寫(xiě),在閱讀源代碼的過(guò)程中也能夠?qū)W到很多編程的技巧。,.,Scala是一門(mén)多范式的編程語(yǔ)言,并集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。這種語(yǔ)言和Java語(yǔ)言一樣,運(yùn)行在Java虛擬機(jī)JVM之上所以,Scala能夠和Java無(wú)縫集成,只要將jar包導(dǎo)進(jìn)來(lái),里面的類可以隨便用。所以Java程序猿能夠很快上手Scala。對(duì)于熟悉Python的同學(xué)來(lái)說(shuō)也同樣。,七、函數(shù)式編程簡(jiǎn)介,.,Scala作為一個(gè)多范式編程語(yǔ)言。雖然Scala不強(qiáng)求開(kāi)發(fā)者使用函數(shù)式編程,不強(qiáng)求變量都是不
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年雄激素及同化激素項(xiàng)目建議書(shū)
- 2025年鋯合金管材項(xiàng)目發(fā)展計(jì)劃
- 2025年動(dòng)力調(diào)諧陀螺平臺(tái)合作協(xié)議書(shū)
- 2025年AOI光學(xué)檢測(cè)系統(tǒng)項(xiàng)目合作計(jì)劃書(shū)
- 中小學(xué)音樂(lè)教育中創(chuàng)新教育的研究分析
- 2025年耐高溫濾料項(xiàng)目發(fā)展計(jì)劃
- 2025年隔音降噪設(shè)備:隔音吸聲材料項(xiàng)目發(fā)展計(jì)劃
- 項(xiàng)目溝通管理
- 教育心理學(xué)在學(xué)生自我管理中的應(yīng)用研究
- 提高學(xué)員滿意度教育培訓(xùn)課程設(shè)計(jì)的關(guān)鍵因素分析
- 部編級(jí)下冊(cè)期末語(yǔ)文集體備課表
- 2022北京冬奧會(huì)舉辦宣傳15課件
- 土壤分析技術(shù)規(guī)范(第二版)
- 城市園林綠化養(yǎng)護(hù)管理質(zhì)量要求
- 四風(fēng)問(wèn)題整改臺(tái)賬
- 2012 EAPC 阿片類藥物治療癌痛指南
- DB41∕T 2202-2021 水利工程白蟻防治項(xiàng)目驗(yàn)收技術(shù)規(guī)程
- 模板10KV架空雙回線路安裝竣工資料
- 蒸車(chē)操作規(guī)程
- 施工現(xiàn)場(chǎng)臨水臨電標(biāo)準(zhǔn)化圖冊(cè)
- 鋼化爐操作手冊(cè)
評(píng)論
0/150
提交評(píng)論