版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
之Spark胡楠南京郵電大學(xué)計算機學(xué)院云計算技術(shù)和大數(shù)據(jù)1最新課件綱要Spark綜述1核心技術(shù)2Spark架構(gòu)3BDAS簡介4函數(shù)式編程簡介7Spark應(yīng)用實例6Spark安裝部署52最新課件一、Spark綜述
Spark是什么1Spark是基于內(nèi)存計算的大數(shù)據(jù)并行計算框架。Spark基于內(nèi)存計算,提高了在大數(shù)據(jù)環(huán)境下數(shù)據(jù)處理的實時性,同時保證了高容錯性和高可伸縮性,允許用戶將Spark部署在大量廉價硬件之上,形成集群。Spark于2009年誕生于加州大學(xué)伯克利分校AMPLab。并且于2010年開源。2013年6月Spark進入Apache孵化器。目前,已經(jīng)成為Apache軟件基金會旗下的頂級開源項目。Mataizaharia3最新課件一、Spark綜述
Spark與Hadoop2Spark相比HadoopMapRedue的優(yōu)勢如下:1、中間結(jié)果輸出
基于MapReduce的計算模型會將中間結(jié)果序列化到磁盤上。而Spark將執(zhí)行模型抽象為通用的有向無環(huán)圖執(zhí)行計劃。且可以將中間結(jié)果緩存內(nèi)存中。2、數(shù)據(jù)格式和內(nèi)存布局Spark抽象出分布式內(nèi)存存儲結(jié)構(gòu)RDD,進行數(shù)據(jù)存儲。Spark能夠控制數(shù)據(jù)在不同節(jié)點上的分區(qū),用戶可以自定義分區(qū)策略。4最新課件一、Spark綜述
Spark與Hadoop33、執(zhí)行策略MapReduce在數(shù)據(jù)shuffle之前總是花費大量時間來排序。Spark支持基于Hash的分布式聚合,在需要的時候再進行實際排序。4、任務(wù)調(diào)度的開銷MapReduce上的不同作業(yè)在同一個節(jié)點運行時,會各自啟動一個JVM。而Spark同一節(jié)點的所有任務(wù)都可以在一個JVM上運行。5最新課件一、Spark綜述Spark發(fā)展現(xiàn)狀3Spark生態(tài)隨著BDAS的完善,已經(jīng)成型。Spark全面兼容Hadoop的數(shù)據(jù)持久層。從而讓把計算任務(wù)從原來的MapReduce計算任務(wù)遷移到Spark中更加簡單。目前Spark的工業(yè)應(yīng)用在國內(nèi)已經(jīng)大范圍落地。包括BAT在內(nèi)的一眾互聯(lián)網(wǎng)公司都建立了自己的Spark集群6最新課件綱要Spark綜述1核心技術(shù)2Spark架構(gòu)3BDAS簡介4函數(shù)式編程簡介7Spark應(yīng)用實例6Spark安裝部署57最新課件二、Spark關(guān)鍵技術(shù)
RDD的全稱是彈性分布式數(shù)據(jù)集(resilientdistributeddataset)是Spark的核心數(shù)據(jù)模型,RDD是Spark中待處理的數(shù)據(jù)的抽象,它是邏輯中的實體。對于使用者來說,你得到的數(shù)據(jù)操作接口就是RDD,在對RDD進行處理的時候不需要考慮底層的分布式集群,就像在單機上一樣即可,這也正是Spark的優(yōu)勢之一。
什么是RDD18最新課件二、Spark關(guān)鍵技術(shù)從Hadoop文件系統(tǒng)輸入(比如HDFS)創(chuàng)建。從父RDD轉(zhuǎn)換得到新的RDD。將數(shù)組或者集合這樣的數(shù)據(jù)結(jié)構(gòu)并行化,轉(zhuǎn)化成RDD。通過cache()函數(shù)將計算后的RDD緩存到內(nèi)存中。RDD創(chuàng)建方式29最新課件二、Spark關(guān)鍵技術(shù)從邏輯上來看,RDD就是數(shù)據(jù)。而實際上,從物理上來看,RDD是一種分布式內(nèi)存的抽象。Spark中的數(shù)據(jù)實際上是像HDFS那樣分塊存儲RDD存儲結(jié)構(gòu)310最新課件二、Spark關(guān)鍵技術(shù)分區(qū)列表計算每個分片的函數(shù)對父RDD的依賴對“鍵值對”數(shù)據(jù)類型RDD的分區(qū)器,控制分區(qū)策略和分區(qū)數(shù)。每個數(shù)據(jù)分區(qū)的地址列表。所以RDD實際上只是一個元數(shù)據(jù)對象,用于將對數(shù)據(jù)集的操作映射到物理存儲之上。RDD的重要內(nèi)部屬性如下:11最新課件二、Spark關(guān)鍵技術(shù)RDD中的依賴關(guān)系RDD之間的依賴關(guān)系可以分為兩類:窄依賴:每個父RDD的分區(qū)都至多被一個子RDD的分區(qū)使用;窄依賴允許在單個集群節(jié)點上流水線式執(zhí)行,這個節(jié)點可以計算所有父級分區(qū)。在窄依賴中,節(jié)點失敗后的恢復(fù)更加高效。因為只有丟失的父級分區(qū)需要重新計算,并且這些丟失的父級分區(qū)可以并行地在不同節(jié)點上重新計算。
寬依賴:多個子RDD的分區(qū)依賴一個父RDD的分區(qū)。寬依賴需要所有的父RDD數(shù)據(jù)可用并且數(shù)據(jù)已經(jīng)通過類MapReduce的操作shuffle完成。在寬依賴的繼承關(guān)系中,單個失敗的節(jié)點可能導(dǎo)致一個RDD的所有先祖RDD中的一些分區(qū)丟失,導(dǎo)致計算的重新執(zhí)行。12最新課件二、Spark關(guān)鍵技術(shù)寬依賴和窄依賴的樣例。每一個方框表示一個RDD,其內(nèi)的陰影矩形表示RDD的分區(qū)。13最新課件二、Spark關(guān)鍵技術(shù)Transformation Transformation操作是延遲計算的,也就是說從一個RDD轉(zhuǎn)換生成另一個RDD的轉(zhuǎn)換操作不是立即執(zhí)行的,而是需要等到Action操作是才真正出發(fā)運算。Action Action算子會觸發(fā)Spark提交作業(yè),并將數(shù)據(jù)輸出到Spark系統(tǒng)。RDD操作算子,RDD中的操作算子可以分為兩類:Transformation(變換)算子
與Action(行動)算子。RDD算子414最新課件二、Spark關(guān)鍵技術(shù)RDD算子操作舉例如下:Valline=sc.text)line.map(n=>Integer.parseInt(n)*Integer.parseInt(n)).reduce(_+_)15最新課件二、Spark關(guān)鍵技術(shù)
運行邏輯516最新課件spark的容錯機制6二、Spark關(guān)鍵技術(shù)基于血統(tǒng)的容錯機制(lineage):在spark中RDD具有不變性,在數(shù)據(jù)處理過程中,spark通過lineage圖記錄了各個RDD之間的變換關(guān)系,一旦某個數(shù)據(jù)處理過程出現(xiàn)錯誤,spark可以根據(jù)lineage圖快速進行容錯恢復(fù)。特別是對于map操作來說,當(dāng)某個節(jié)點的任務(wù)失敗,spark只需要重新計算相應(yīng)分區(qū)的數(shù)據(jù),而不必將整個任務(wù)重新計算。在很多分布式數(shù)據(jù)處理系統(tǒng)中通過備份來進行容錯,相比于這種會導(dǎo)致巨大存儲消耗的容錯方式,spark的lineage圖只需要十幾kb的存儲空間。Spark允許用戶將數(shù)據(jù)cache下來,對于將來可能頻繁使用的某個計算結(jié)果,將這個RDDcache下來是明智的選擇。17最新課件二、Spark關(guān)鍵技術(shù)檢查點支持:雖然lineage可用于錯誤后RDD的恢復(fù),但對于很長的lineage的RDD來說,這樣的恢復(fù)耗時較長。由此,可以考慮將某些RDD進行檢查點操作(Checkpoint)保存到穩(wěn)定存儲上。Spark當(dāng)前提供了為RDD設(shè)置檢查點操作的API,讓用戶自行決定需要為哪些數(shù)據(jù)設(shè)置檢查點操作。由于RDD的只讀特性使得比常用的共享內(nèi)存更容易做checkpoint.由于不需要關(guān)心一致性的問題,RDD的寫出可在后臺進行,而不需要程序暫?;蜻M行分布式快照18最新課件綱要Spark綜述1核心技術(shù)2Spark架構(gòu)3BDAS簡介4Scala簡介7Spark應(yīng)用實例6Spark安裝部署519最新課件三、Spark體系架構(gòu)架構(gòu)組成1MasterWorker20最新課件三、Spark體系架構(gòu)架構(gòu)圖221最新課件三、Spark體系架構(gòu)角色任務(wù)3Master進程和Worker進程,對整個集群進行控制。Driver程序是應(yīng)用邏輯執(zhí)行的起點,負責(zé)作業(yè)的調(diào)度,即Task任務(wù)的分發(fā)Worker用來管理計算節(jié)點和創(chuàng)建Executor并行處理任務(wù)。Executor對相應(yīng)數(shù)據(jù)分區(qū)的任務(wù)進行處理。22最新課件三、Spark體系架構(gòu)執(zhí)行流程4Client提交應(yīng)用,Master找到一個Worker啟動DriverDriver向Master或者資源管理器申請資源,之后將應(yīng)用轉(zhuǎn)化為RDDGraphDAGScheduler將RDDGraph轉(zhuǎn)化為Stage的有向無環(huán)圖提交給TaskSchedulerTaskScheduler提交任務(wù)給Executor執(zhí)行。23最新課件綱要Spark綜述1核心技術(shù)2Spark架構(gòu)3BDAS簡介4Scala簡介7Spark應(yīng)用實例6Spark安裝部署524最新課件四、BDAS簡介目前,Spark已經(jīng)發(fā)展成為包含眾多子項目的大數(shù)據(jù)計算平臺。伯克利將Spark的整個生態(tài)系統(tǒng)稱為伯克利數(shù)據(jù)分析棧(BDAS),目前包含四個已經(jīng)比較成熟的組件。25最新課件四、BDAS簡介談到SparkSQL:首先需要從Shark說起。SparkSQL1.126最新課件四、BDAS簡介Shark起源1.2為了給熟悉RDBMS但又不理解MapReduce的技術(shù)人員提供快速上手的工具,Hive應(yīng)運而生,它是當(dāng)時唯一運行在Hadoop上的SQL-on-Hadoop工具。但是MapReduce計算過程中大量的中間磁盤落地過程消耗了大量的I/O,降低的運行效率,為了提高SQL-on-Hadoop的效率,大量的SQL-on-Hadoop工具開始產(chǎn)生。其中就包括Shark27最新課件四、BDAS簡介Shark與hive1.3Shark基于Hive修改了內(nèi)存管理、物理計劃、執(zhí)行三個模塊,并使之能運行在Spark引擎上,從而使得SQL查詢的速度得到10-100倍的提升28最新課件四、BDAS簡介SparkSQL1.4Shark缺陷:Shark對于Hive的太多依賴,制約了Spark的OneStackRuleThemAll的既定方針,制約了Spark各個組件的相互集成SparkSQL拋棄原有Shark的代碼,汲取了Shark的一些優(yōu)點,如內(nèi)存列存儲(In-MemoryColumnarStorage)、Hive兼容性等,重新開發(fā)了SparkSQL代碼;由于擺脫了對Hive的依賴性,SparkSQL無論在數(shù)據(jù)兼容、性能優(yōu)化、組件擴展方面都得到了極大的方便29最新課件四、BDAS簡介SparkSQL特點1.5*數(shù)據(jù)兼容方面不但兼容Hive,還可以從RDD、JSON文件中獲取數(shù)據(jù)*性能優(yōu)化方面采取In-MemoryColumnarStorage、byte-codegeneration等優(yōu)化技術(shù)*組件擴展方面無論是SQL的語法解析器、分析器還是優(yōu)化器都可以重新定義,進行擴展。30最新課件四、BDAS簡介Overview1.6SparkSQL是一個用于結(jié)構(gòu)化的數(shù)據(jù)處理的模塊。SparkSQL和SparkRDDAPI的區(qū)別如下:1、SparkSQL的接口提供更多的關(guān)于數(shù)據(jù)以及操作的結(jié)構(gòu)方面的信息。2、SparkSQL會利用這些信息對數(shù)據(jù)操作進行額外的優(yōu)化??梢酝ㄟ^三種方式與SparkSQL進行交互:SQL、DataFramesAPI、DatasetsAPI這三種API/語言最終都同一個執(zhí)行引擎完成操作。所以你可以選擇任何一種舒服的方式來書寫自己的數(shù)據(jù)處理邏輯。31最新課件四、BDAS簡介SQL1.7SparkSQL的使用方式之一是用來執(zhí)行SQL查詢。特性如下:同時支持標(biāo)準(zhǔn)的SQL語句和HiveQL能夠從Hive表中讀取數(shù)據(jù)(需要進行配置)查詢結(jié)果將返回一個DataFrame支持在交互式環(huán)境中使用SQL語句32最新課件四、BDAS簡介DataFrames1.7DataFrame用來描述結(jié)構(gòu)化的數(shù)據(jù)。Spark官方給出的定義為:ADataFrameisadistributedcollectionofdataorganizedintonamedcolumns.DataFrame概念上等同于關(guān)系型數(shù)據(jù)庫中的一個表或者R/Python語言中的dataframe,
不同的是Spark提供更豐富的優(yōu)化。DataFrame可從多種資源中構(gòu)建:結(jié)構(gòu)化的數(shù)據(jù)文件、hive中的表、外部數(shù)據(jù)庫、現(xiàn)有的RDD等。DataFrame提供了豐富的API。33最新課件四、BDAS簡介SparkStreaming2SparkStreaming是建立在Spark上的實時計算框架,通過它提供的豐富的API、基于內(nèi)存的高速執(zhí)行引擎,用戶可以結(jié)合流式、批處理和交互試查詢應(yīng)用。SparkStreaming通過將流數(shù)據(jù)按指定時間片累積為RDD,然后將每個RDD進行批處理,進而實現(xiàn)大規(guī)模的流數(shù)據(jù)處理。其吞吐量能夠超越現(xiàn)有主流流處理框架Storm,并提供豐富的API用于流數(shù)據(jù)計算。34最新課件四、BDAS簡介
計算流程2.1SparkStreaming是將流式計算分解成一系列短小的批處理作業(yè)。把SparkStreaming的輸入數(shù)據(jù)按照batchsize(如1秒)分成一段一段的數(shù)據(jù),每一段數(shù)據(jù)都轉(zhuǎn)換成Spark中的RDD將SparkStreaming中對DStream的Transformation操作變?yōu)獒槍park中對RDD的Transformation操作將RDD經(jīng)過操作變成中間結(jié)果保存在內(nèi)存中。整個流式計算根據(jù)業(yè)務(wù)的需求可以對中間的結(jié)果進行疊加,或者存儲到外部設(shè)備。35最新課件四、BDAS簡介流程圖2.236最新課件四、BDAS簡介spark與storm2.3處理模型,延遲:Storm處理的是每次傳入的一個事件,而SparkStreaming是處理某個時間段窗口內(nèi)的事件流。容錯、數(shù)據(jù)保證:SparkStreaming使用Spark的血統(tǒng)容錯機制,Storm單獨跟蹤每條記錄,在錯誤恢復(fù)時可能出錯。另一方面,SparkStreaming只需要在批級別進行跟蹤處理,因此即便一個節(jié)點發(fā)生故障,也可以有效地保證每個batch將完全被處理一次。簡而言之,如果你需要秒內(nèi)的延遲,Storm是一個不錯的選擇,而且沒有數(shù)據(jù)丟失。如果你需要有狀態(tài)的計算,而且要完全保證每個事件只被處理一次,SparkStreaming則更好。37最新課件四、BDAS簡介GraphX3Graphx是Spark生態(tài)中的非常重要的組件,可以對圖這種數(shù)據(jù)結(jié)構(gòu)進行并行的處理計算。GraphX基于BSP(整體同步并行計算模型)模型,在Spark之上封裝類似Pregel(google的圖計算框架)的接口。GraphX通過引入**ResilientDistributedPropertyGraph**擴展了SparkRDD這種抽象數(shù)據(jù)結(jié)構(gòu)38最新課件四、BDAS簡介GraphX架構(gòu)3.139最新課件四、BDAS簡介
GraphX存儲結(jié)構(gòu)3.2graphx借鑒powerGraph,使用的是vertexcut(點分割)方式存儲圖。優(yōu)點:任何一條邊只會出現(xiàn)在一臺機器上,對邊的操作進行起來比較簡單。網(wǎng)絡(luò)開銷小缺點:每個點可能要存儲多份,更新點要有數(shù)據(jù)同步開銷。40最新課件四、BDAS簡介
GraphX底層設(shè)計3.31、對Graph視圖的所有操作,最終都會轉(zhuǎn)換成其關(guān)聯(lián)的Table視圖的RDD操作來完成。2、兩種視圖底層共用的物理數(shù)據(jù),由RDD[Vertex-Partition]和RDD[EdgePartition]這兩個RDD組成。3、圖的分布式存儲采用點分割模式,而且使用partitionBy方法,由用戶指定不同的劃分策略。41最新課件四、BDAS簡介MLlib1MLlib是構(gòu)建在Spark上的分布式機器學(xué)習(xí)庫,充分利用了Spark的內(nèi)存計算和適合迭代型計算的優(yōu)勢,使性能大幅提升,同時Spark算子豐富的表現(xiàn)力,讓大規(guī)模機器學(xué)習(xí)的算法開發(fā)不再復(fù)雜。MLlib包含了分類、回歸、聚類、協(xié)同過濾、數(shù)據(jù)降維等基本機器學(xué)習(xí)算法的實現(xiàn)。使用者也能夠根據(jù)自己的業(yè)務(wù)需要,在這些算法之上進行進一步開發(fā)。42最新課件綱要Spark綜述1核心技術(shù)2Spark架構(gòu)3BDAS簡介4函數(shù)式編程簡介7Spark應(yīng)用開發(fā)實戰(zhàn)6Spark安裝部署543最新課件五、Spark安裝部署Spark部署模式1Spark有三種部署模式:1、standalone2、SparkonYarn3、SparkonMesos44最新課件五、Spark安裝部署Standalone1.1自帶完整的服務(wù),包括資源調(diào)度和文件管理都由自己完成,可單獨部署到一個集群中。無需依賴任何其他資源管理系統(tǒng)。目前Spark在standalone模式下是沒有任何單點故障問題的,這是借助zookeeper實現(xiàn)的,思想類似于Hbasemaster單點故障解決方案。45最新課件五、Spark安裝部署Spark
OnMesos1.2Mesos是AMPlab開發(fā)的資源調(diào)度器,Spark可以在其上以插件的形式運行。正因為Mesos與Spark同出一源,所以Spark運行在Mesos更加靈活,自然。SparkOnMesos有兩種調(diào)度模式:粗粒度模式(Coarse-grainedMode)細粒度模式(Fine-grainedMode)46最新課件五、Spark安裝部署SparkOnYarn1.3這是一種最有前景的部署模式。但限于YARN自身的發(fā)展,目前僅支持粗粒度模式(Coarse-grainedMode)。YARN上的Container資源是不可以動態(tài)伸縮的,一旦Container啟動之后,可使用的資源不能再發(fā)生變化,不過這個已經(jīng)在YARN計劃中了。47最新課件五、Spark安裝部署Spark部署實戰(zhàn)2給大家演示SparkonYarn的部署過程。部署在最簡單的集群之上:兩個節(jié)點,一個master和一個slave服務(wù)器操作系統(tǒng)是ubuntu12Hadoop版本:2.2.0Spark版本:1.0.2JDK版本:1.7Scala版本:2.10.4Master:31Slave:2548最新課件五、Spark安裝部署首先安裝Scala:下載地址:下載完成后將Scala-2.10.4.tgz上傳至linux主機中,解壓: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使配置生效。49最新課件五、Spark安裝部署安裝Spark進入官網(wǎng)下載Spark程序包,下載地址:下載spark-1.0.2-bin-hadoop2.tgz解壓:tar-zxvfspark-1.0.2-bin-hadoop2.tgz-C/cloud接下來修改Spark的配置文件,這里對Spark進行簡單配置50最新課件五、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文件:本次示例集群有兩個節(jié)點,一個master節(jié)點和一個slave1節(jié)點。所以在slaves文件中只需要添加:slave151最新課件五、Spark安裝部署接下來同步至slave節(jié)點:首先,同步scala。scp-r/cloud/scala-2.10.4username@master:/cloud然后是spark:scp-r/cloud/spark-1.0.2-bin-hadoop2/username@master:/cloud/最后修改slave1上的/etc/profile文件和master節(jié)點一致。記得source/etc/profile。提示:如果有多個從節(jié)點,這樣同步會很麻煩,可以用pssh批量操作。52最新課件五、Spark安裝部署啟動Spark首先啟動Hadoop:Start-all.sh然后啟動Sparkcd/cloud/spark-1.0.2-bin-hadoop2/sbin./start-all.sh正常情況下,master節(jié)點會出現(xiàn)master進程,可以用jps查看:#jps23489Jps1258Worker1364DataNode24587NodeManager#jps23526Jps2112Master7235NameNode7598SecondaryNameNode7569ResourceManagerworker節(jié)點會有worker進程:53最新課件綱要Spark綜述1核心技術(shù)2Spark架構(gòu)3BDAS簡介4函數(shù)式編程簡介7Spark應(yīng)用實例6Spark安裝部署554最新課件六、Spark應(yīng)用開發(fā)實戰(zhàn)Wordcount相當(dāng)于大數(shù)據(jù)應(yīng)用程序中的“HelloWorld”本次演示的WordCount是在eclipse下編寫目前大部分的Scala開發(fā)者都比較推崇IntelliJIDEA。如果電腦配置還不錯的話,推薦用這個IDEA.以上開發(fā)工具都可以在Scala官網(wǎng)找到下載鏈接/55最新課件六、Spark應(yīng)用開發(fā)實戰(zhàn)
編程準(zhǔn)備1首先FIle->New->Scalaproject:新建一個Scala工程,名稱就叫TestSpark_01好了。JRE選擇1.7/1.8都可以。然后在工程中的src文件夾上面右擊->new->Package,建立一個包。最后在包上面右擊->New->ScalaObject,這里要注意一下,選擇的是ScalaObject,而不是ScalaClass。56最新課件六、Spark應(yīng)用開發(fā)實戰(zhàn)
編程準(zhǔn)備2注意在寫代碼之前一定要先導(dǎo)入相關(guān)的依賴。首先要將工程中自動生成的Scalalibrarycontainer文件夾刪除,否則工程會由于Scala版本沖突出現(xiàn)錯誤。然后在Spark安裝目錄的lib目錄下找到spark-assembly-1.3.0-hadoop2.3.0.jar這個文件,以“spark-assembly-”開頭,后面的因版本而異。這個就是Spark程序的依賴jar包。在工程上右擊,新建一個名為lib的文件夾,將jar包復(fù)制過來,然后在jar包上右擊->buildpath->addtobuildpath即可。57最新課件六、Spark應(yīng)用開發(fā)實戰(zhàn)
寫代碼31. packagecn.hunan2. 3. importorg.apache.spark._4. importorg.apache.spark.SparkContext._5. 6. objectWordCount{7. defmain(args:Array[String]){8. valconf=newSparkConf()9. valsc=newSparkContext(conf)10. valline=sc.text(0))11. valresult=line.flatMap(_.split("[^a-zA-Z]+")).map((_,1)).reduceByKey(_+_)13. result.saveAsText(1))14. sc.stop()15. }16. }58最新課件六、Spark應(yīng)用開發(fā)實戰(zhàn)
生成jar包4接下來就可以導(dǎo)出jar包了。在WordCount.Scala文件上右擊->Export,然后選擇JARfile包名為WC.jar,存放在E:\myjar目錄下。接下來需要把Jar包上傳至Spark集群。我用的是SecureCRT這個工具,用這個工具鏈接master節(jié)點后,按alt+p即可調(diào)出SFTP文件傳輸窗口。59最新課件六、Spark應(yīng)用開發(fā)實戰(zhàn)
運行Jar5在HDFS上傳一個測試文本,用于wordcount。hadoopfs-putJane1.txt/Spark/Jane1.txt切換到目錄SPARK_HOME/bin目錄下:在linuxshell中執(zhí)行以下命令:./spark-submit
--class
cn.hunan.WordCount
--master
yarn
~/HunanJar/WC.jar
/Spark/Jane1.txt
/Spark/out
60最新課件六、Spark應(yīng)用開發(fā)實戰(zhàn)
運行結(jié)果6等待執(zhí)行結(jié)束后就可以看到在HDFS://Spark/out目錄下生成了以下文件:61最新課件七、函數(shù)式編程簡介
為什么要學(xué)Scala?1Scala是Spark的原生語言。而Spark又是一個開源項目,開源項目一般是免費供大家使用,源代碼也是完全公開。這是開源的優(yōu)勢。但是開源軟件正因為是免費的,所以在遇到問題的時候,軟件作者并沒有義務(wù)為你解決問題,如果用的是收費的商業(yè)軟件,就有很多的售后支持。所以,對于開源使用者來說,了解源碼是必須要做的功課。而且這些源碼都是世界頂尖的程序猿所寫,在閱讀源代碼的過程中也能夠?qū)W到很多編程的技巧。62最新課件Scala特點2Scala是一門多范式的編程語言,并集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。這種語言和Java語言一樣,運行在Java虛擬機JVM之上所以,Scala能夠和Java無縫集成,只要將jar包導(dǎo)進來,里面的類可以隨便用。所以Java程序猿能夠很快上手Scala。對于熟悉Python的同學(xué)來說也同樣。七、函數(shù)式編程簡介63最新課件函數(shù)式編程3
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度生態(tài)循環(huán)農(nóng)業(yè)農(nóng)副業(yè)承包合同書模板4篇
- 2025年度個人藝術(shù)品借款合同樣本3篇
- 2025年度環(huán)保產(chǎn)業(yè)貸款擔(dān)保合同4篇
- 2025年農(nóng)藥生產(chǎn)設(shè)備租賃與維修服務(wù)合同4篇
- 2025年度環(huán)保技術(shù)轉(zhuǎn)移與應(yīng)用合同4篇
- 2025年度個人住宅抵押貸款服務(wù)合同2篇
- 2025年度倉儲物流廠房項目投資合作合同樣本3篇
- 二零二五年度櫥柜行業(yè)展會參展合同范本7篇
- 2025年現(xiàn)代廚房設(shè)備租賃與維護承包協(xié)議4篇
- 2025年度打井工程地質(zhì)鉆孔數(shù)據(jù)采集協(xié)議4篇
- 副總經(jīng)理招聘面試題與參考回答(某大型國企)2024年
- PDCA循環(huán)提高護士培訓(xùn)率
- 2024-2030年中國智慧水務(wù)行業(yè)應(yīng)用需求分析發(fā)展規(guī)劃研究報告
- 《獅子王》電影賞析
- 河北省保定市定州市2025屆高二數(shù)學(xué)第一學(xué)期期末監(jiān)測試題含解析
- 中醫(yī)護理人文
- 2024-2030年中國路亞用品市場銷售模式與競爭前景分析報告
- 貨物運輸安全培訓(xùn)課件
- 前端年終述職報告
- 2024小說推文行業(yè)白皮書
- 市人民醫(yī)院關(guān)于開展“改善就醫(yī)感受提升患者體驗主題活動”2023-2025年實施方案及資料匯編
評論
0/150
提交評論