Spark分布式并行計算框架課件_第1頁
Spark分布式并行計算框架課件_第2頁
Spark分布式并行計算框架課件_第3頁
Spark分布式并行計算框架課件_第4頁
Spark分布式并行計算框架課件_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Spark分布式并行計算框架Spark分布式并行計算框架Spark分布式并行計算框架內(nèi)容簡介Spark是什么Spark的發(fā)展歷程Spark能干什么Spark的適用場景Spark的特點Spark生態(tài)系統(tǒng)Spark運行模式Spark高可用Spark核心概念:RDDSpark集群搭建Spark與Hadoop整合Spark應用部署模式22020/11/30內(nèi)容簡介Spark是什么Spark的發(fā)展歷程Spark能干什么Spark的適用場景Spark的特點Spark生態(tài)系統(tǒng)Spark運行模式Spark高可用Spark核心概念:RDDSpark集群搭建Spark與Hadoop整合Spark應用部署模式202

2、0/11/302Spark是什么Spark是一個基于內(nèi)存計算的開源的分布式集群并行計算系統(tǒng)Spark非常小巧玲瓏,由加州伯克利大學AMP實驗室的Matei為主的小團隊所開發(fā)。使用的語言是Scala,運行在JVM上,項目的core部分的代碼只有63個Scala文件,非常短小精悍。是繼Hadoop之后的新一代大數(shù)據(jù)分布式處理框架目前Spark在全球已有廣泛的應用,其中包括 Alibaba 、 Baidu 、 Tencent Youku 、IBM、Intel、雅虎等。2020/11/303Spark發(fā)展歷程Spark誕生于2009年,那時候它是,加州大學伯克利分校RAD實驗室的一個研究項目,后來到了

3、AMP實驗室。Spark最初是基于Hadoop Mapreduce的,后來發(fā)現(xiàn)Mapreduce在迭代式計算和交互式上是低效的。因此Spark進行了改進,引入了內(nèi)存存儲和高容錯機制。關(guān)于Spark的研究論文在學術(shù)會議上發(fā)表,并且在它被創(chuàng)建的2009年不久之后,對于一些特定的工作,Spark比Mapreduce快10-20倍。2010年3月份Spark開源。2011年,AMP實驗室開始在Spark上面開發(fā)高級組件,像Shark(Hive on Spark),Spark Streaming。2013年轉(zhuǎn)移到了Apache下,現(xiàn)在已經(jīng)是頂級項目了。2014年5月份Spark1.0發(fā)布。目前:發(fā)布最新

4、版Spark1.6.1Spark在7年內(nèi)迅速發(fā)展,較于其他大數(shù)據(jù)平臺或框架,Spark代碼庫最為活躍2020/11/304Spark發(fā)展歷程2020/11/305Spark能干什么大規(guī)模數(shù)據(jù)處理。例如用戶行為數(shù)據(jù),電子商務(wù)平臺用戶的操作行為記錄,放進Spark系統(tǒng),然后對數(shù)據(jù)進行多維度的分析,發(fā)現(xiàn)潛在客戶,個性化推薦商品流數(shù)據(jù)處理。圖計算。社交網(wǎng)絡(luò)機器學習。協(xié)同過濾2020/11/306Spark的適用場景Spark是基于內(nèi)存的迭代計算框架,適用于需要多次操作特定數(shù)據(jù)集的應用場合。需要反復操作的次數(shù)越多,所需讀取的數(shù)據(jù)量越大,受益越大,數(shù)據(jù)量小但是計算密集度較大的場合,受益就相對較小由于RDD

5、的特性,Spark不適用那種異步細粒度更新狀態(tài)的應用,例如web服務(wù)的存儲或者是增量的web爬蟲和索引。就是對于那種增量修改的應用模型不適合數(shù)據(jù)量不是特別大,但是要求實時統(tǒng)計分析需求2020/11/307Spark特點Spark是快速的很多任務(wù)能夠秒級完成,對于一些特定的工作,Spark比Mapreduce快10-20倍。Spark擴充了流行的Mapreduce計算模型,使Spark更高效地支持更多類型的計算,包括交互式查詢,和流處理。速度快的另一個主要原因就是,能夠在內(nèi)存中計算。官方提供的數(shù)據(jù)表明,如果數(shù)據(jù)由磁盤讀取,速度是Hadoop MapReduce的10倍以上,如果數(shù)據(jù)從內(nèi)存中讀取,

6、速度可以高達100多倍。2020/11/308Spark特點Spark是易用的Spark不僅支持Scala編寫應用程序,而且支持Java和Python, Python, R等語言進行編寫。2020/11/309Spark特點Spark是通用的Spark的設(shè)計,容納了之前很多獨立的,分布式系統(tǒng)所擁有的功能。獨立的分布式系統(tǒng)包括:批處理,迭代式計算,交互查詢和流處理等。并且,由之前需要維護不同的集群,到現(xiàn)在只需要維護一個Spark集群。Spark生態(tài)圈即BDAS(伯克利數(shù)據(jù)分析棧)包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等組件,這些組

7、件分別處理Spark Core提供內(nèi)存計算框架、SparkStreaming的實時處理應用、Spark SQL的即席查詢、MLlib或MLbase的機器學習和GraphX的圖處理,它們都是由AMP實驗室提供,能夠無縫的集成并提供一站式解決平臺。2020/11/3010Spark特點Spark是開放的Spark提供了Java,Scala, Python, R,SQL的API和豐富的內(nèi)置庫。同時,Spark和其它的大數(shù)據(jù)工具整合的很好。尤其,Spark能夠運行在Hadoop集群上面,能夠訪問Hadoop數(shù)據(jù)。2020/11/3011Spark特點Spark隨處運行Spark具有很強的適應性,能夠讀

8、取HDFS、Cassandra、HBase、S3和Techyon為持久層讀寫原生數(shù)據(jù),能夠以Mesos、YARN和自身攜帶的Standalone作為資源管理器調(diào)度job,來完成Spark應用程序的計算。2020/11/3012Spark生態(tài)系統(tǒng)2020/11/3013Spark生態(tài)系統(tǒng)Spark生態(tài)圈也稱為BDAS(伯克利數(shù)據(jù)分析棧),是伯克利APMLab實驗室打造的,力圖在算法(Algorithms)、機器(Machines)、人(People)之間通過大規(guī)模集成來展現(xiàn)大數(shù)據(jù)應用的一個平臺。伯克利AMPLab運用大數(shù)據(jù)、云計算、通信等各種資源以及各種靈活的技術(shù)方案,對海量不透明的數(shù)據(jù)進行甄別

9、并轉(zhuǎn)化為有用的信息,以供人們更好的理解世界。該生態(tài)圈已經(jīng)涉及到機器學習、數(shù)據(jù)挖掘、數(shù)據(jù)庫、信息檢索、自然語言處理和語音識別等多個領(lǐng)域。Spark生態(tài)圈以Spark Core為核心,從HDFS、Amazon S3和HBase等持久層讀取數(shù)據(jù),以MESS、YARN和自身攜帶的Standalone為資源管理器調(diào)度Job完成Spark應用程序的計算。 這些應用程序可以來自于不同的組件,如Spark Shell/Spark Submit的批處理、Spark Streaming的實時處理應用、Spark SQL的即席查詢、BlinkDB的權(quán)衡查詢、MLlib/MLbase的機器學習、GraphX的圖處理和

10、SparkR的數(shù)學計算等等。2020/11/3014Spark生態(tài)系統(tǒng)Spark生態(tài)系統(tǒng)學習、維護成本很低。要實現(xiàn)一個相對完整的端到端的解決方案,以前需要部署多個專有系統(tǒng),現(xiàn)在只需要一個SparkSpark Core 對應Hadoop MRSparkSQL 對應HiveSparkStreaming 對應StromSparkGraphX對應GiraphSparkMLLib 對應Mahout2020/11/3015Spark運行模式Spark目前主要有4種運行模式LocalN模式,適用N個線程,用于調(diào)試。Local cluster 偽分布式模式,可以配置worker數(shù)量,每個worker管理的cp

11、u和內(nèi)存,用于調(diào)試Standalone Cluster集群模式 ,Spark:/hostname:port,需要部署spark到相關(guān)節(jié)點,url為master地址和端口YARN Cluster 模式,運行在資源管理器yarn集群中Mesos Cluster模式,運行在資源管理器Mesos集群中2020/11/3016Spark運行模式2020/11/3017Spark運行模式2020/11/3018Spark運行模式Client 提交driver的終端,可以是集群中的任何一個node,也可以是spark集群外的機器,甚至是調(diào)試程序的IdeDriver就是用戶提交的程序,這里邊定義了SparkC

12、ontext的實例SparkContext初始化過程中Spark會分別創(chuàng)建DAGScheduler作業(yè)調(diào)度和TaskScheduler任務(wù)調(diào)度兩級調(diào)度模塊DAGScheduler是基于任務(wù)模塊的高層調(diào)度模塊,為每個Spark作業(yè)(job)計算具有依賴關(guān)系的多個調(diào)度模塊(通常根據(jù)shuffle來劃分),然后為每個階段構(gòu)建出一組具體的任務(wù)(Task),即任務(wù)集TaskSet交給TaskScheduler來具體執(zhí)行TaskScheduler則負責具體啟動任務(wù)、監(jiān)控和匯報任務(wù)運行情況DAGScheduler和TaskScheduler都是不同階段的調(diào)度者,具體執(zhí)行任務(wù)的是ExectorMaster接收

13、Client提交的作業(yè),管理Worker,并命令Worker啟動Driver和ExecutorWorker負責管理本節(jié)點的資源,定期向Master匯報心跳,接收Master的命令,比如啟動Driver和Executor2020/11/3019Spark高可用Spark 采用了Master/Slaves架構(gòu)的集群模式,因此,存在著Master單點故障?;谖募到y(tǒng)的單點恢復此模式下雖然可以恢復,但需要人工參與。因此,適合對高可用要求不高的場景,如果離線分析。當Master掛掉后,手工啟動Master仍然能繼續(xù)執(zhí)行原來的任務(wù)。當然,也可以繼續(xù)提交任務(wù)export SPARK_DAEMON_JAVA

14、_OPTS=-Dspark.deploy.recoveryMode= -Dspark.deploy.recoveryDirectory=/opt/spark/recovery“基于ZooKeeper的HASpark Standalone使用多個Master節(jié)點,通過ZooKeeper推舉一個為Active(激活)狀態(tài),其它的均為Standby(備用)狀態(tài)。當Active Master節(jié)點掛掉后,ZooKeeper會從所有的Standby Mater中推舉會一個新的Activer Master。新的Active Master恢復到舊有的Active Master的狀態(tài),然后恢復調(diào)度。從Activ

15、er Master失去作用,到新Active Master恢復調(diào)度可能需要12分鐘。export SPARK_DAEMON_JAVA_OPTS=“-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=10-154:2181, 10-153:2181, 10-152:2181, 10-154:2181 -Dspark.deploy.zookeeper.dir=/spark2020/11/3020Spark核心概念:RDD什么是RDDSpark的核心概念是RDD (resilient distributed datas

16、et),是一個只讀的,可分區(qū)的分布式數(shù)據(jù)集,這個數(shù)據(jù)集的全部或部分可以緩存在內(nèi)存中,在多次計算間重用。一種有容錯機制的特殊集合,可以分布在集群的節(jié)點上,以函數(shù)式編程操作集合的方式,進行各種并行操作分布式的,可以分布在多臺機器上,進行計算彈性的,計算過程中內(nèi)存不夠時它會和磁盤進行數(shù)據(jù)交換2020/11/3021Spark核心概念:RDDRDD創(chuàng)建操作 (creation operation)集合創(chuàng)建,由內(nèi)部集合生成,Spark中提供了parallelize和makeRDD兩類函數(shù)來實現(xiàn)從集合生成RDD。var rdd=sc.makeRDD(1 to 10,3)存儲創(chuàng)建,從文件存儲(文本文件,hd

17、fs),數(shù)據(jù)庫(hbase,mongodb),消息隊列(kafka)等獲得數(shù)據(jù)并轉(zhuǎn)換成RDD2020/11/3022Spark核心概念:RDDRDD轉(zhuǎn)換操作(transfermation operation)把一種RDD變成另一種新的RDD。如:map(func):返回一個新的分布式數(shù)據(jù)集,由每個原元素經(jīng)過func函數(shù)轉(zhuǎn)換后組成filter(func):返回一個新的數(shù)據(jù)集,由經(jīng)過func函數(shù)后返回值為true的原元素組成flatMap(func):類似于map,但是每一個輸入元素,會被映射為0到多個輸出元素(因此,func函數(shù)的返回值是一個Seq,而不是單一元素)2020/11/3023Spa

18、rk核心概念:RDDRDD控制操作(control operation)在spark中持久化操作是一種重要的功能,可以將RDD存儲在不同層次的存儲介質(zhì)中,以便后續(xù)的操作能夠重復使用。如:cache()persist()2020/11/3024Spark核心概念:RDDRDD行動操作(action operation)行動操作是和轉(zhuǎn)換操作相對應的一種對RDD的操作類型,在Spark中每調(diào)用一次行動操作都會觸發(fā)一次Spark的調(diào)度并返回相應的結(jié)果將變量或集合返回給driver程序。如:first(),count(),reduce()將RDD直接保存到外部文件系統(tǒng)或數(shù)據(jù)庫,如HDFS,文本文件,hb

19、asesaveAsTestFile()saveAsNewHadoopFile()saveAsNewHadoopDataset()2020/11/3025Spark核心概念:RDD實例代碼var sc =new SparkContext(“spark:/.:7077”,”I love plu”,”spark_home”,”app_jar”)var (“”)var filterRDD=(_contains(“I love plu”)filterRDD.cache()filterRDD.cout() /filterRDD.saveAstestFile(“/.txt”)2020/11/3026Spar

20、k核心概念:RDD實例注解:第1行創(chuàng)建了spark上下文,在上下文實例化的過程中向集群申請資源和運行環(huán)境第2行讀取一個文件并創(chuàng)建了第一個RDD第3行對執(zhí)行轉(zhuǎn)換操作,過濾符合條件的每一行字符串,生成新的RDD,即filterRDD第4行對filterRDD進行控制操作,緩存在內(nèi)存。通過配置不同的緩存策略也可以緩存在硬盤,或者一半在內(nèi)存一半在硬盤第5行對filterRDD進行行動操作,進行count計算,返回包含”I love plu”的行數(shù)Spark是惰性計算,也就是延遲計算,只有當進行行動操作時,才會觸發(fā)spark作業(yè)的運行,也就是說在action 之前的代碼相當于定義了job的執(zhí)行計劃202

21、0/11/3027Spark核心概念:RDD2020/11/3028Spark集群搭建下載解壓jdk,配置環(huán)境變量下載解壓scala,配置環(huán)境變量Spark節(jié)點之間通過ssh協(xié)議通信,各節(jié)點需配置ssh免密碼訪問Spark通過主機名來進行互相訪問,通過修改/etc/hosts文件可配置本地主機名映射關(guān)系,在hosts文件中添加計算機的名稱和IP的對應關(guān)系下載解壓spark,配置spark-env,slaves2020/11/3029Spark集群搭建兩臺機器10-160,10-161部署spark,這兩臺機免密碼ssh登錄兩臺機器10-153,10-154均部署了zookeeper10臺機器1

22、0-7010-79均部署了hadoop10-70部署hive2020/11/3030Spark集群搭建2臺sparkspark-env.sh文件:#exportSPARK_MASTER_IP=192.168.10.160#exportSPARK_LOCAL_IP=10-160#zk高可用模式下不要上面兩項exportSPARK_SSH_OPTS=-p58422exportJAVA_HOME=/usr/local/jdk1.7.0_79exportSCALA_HOME=/usr/local/scala-2.11.8exportSPARK_WORKER_MEMORY=8gexportSPARK_W

23、ORKER_CORES=4exportSPARK_HISTORY_OPTS=-Dspark.history.ui.port=18080-Dspark.history.retainedApplications=3-Dspark.history.fs.logDirectory=exportSPARK_DAEMON_JAVA_OPTS=-Dspark.deploy.recoveryMode=ZOOKEEPER-Dspark.deploy.zookeeper.url=10-154:2181,10-153:2181-Dspark.deploy.zookeeper.dir=/spark2臺sparksla

24、ves文件:10-16010-1612020/11/3031Spark集群搭建選用10-160作為默認master在10-160 執(zhí)行start-all.sh 命令,在10-161執(zhí)行stat-master.sh 命令跑一個job試試,執(zhí)行命令root10-160 spark-1.6.1-bin-hadoop2.6# ./bin/spark-submit -class plu.platform.StartLiveEvent -master spark:/10-160:6066,10-161:6066 -deploy-mode cluster plu.platform.jar 2020/11/3

25、032Spark集群搭建2020/11/3033Spark集群搭建2020/11/3034Spark與Hadoop整合Run Spark on Yarn Cluster2020/11/3035Spark與Hadoop整合在spark-env.sh設(shè)置配置項exportHADOOP_CONF_DIR=/app/hadoop/etc/Hadoop/指明了hadoop集群的配置啟用Yarn日志聚合功能yarn.log-aggregation-enabletrue操作HDFS這樣我們在spark中操作hdfs就不需要關(guān)心hdfs的集群部署情況,如:varrdd1=sc.textFile();/讀本地文件rdd1.saveAsTextFile(hdfs:/tmp/spark_readme.md);/寫入hdfsvarrdd2=sc.textFile(hdfs:/tmp/spark_readme.md);/讀取hdfsrdd2.collect()/顯示文本2020/11/3036Spark與Hado

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論