




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單元9
Spark計(jì)算框架部署任務(wù)9.1部署與操作SparkLocal任務(wù)9.1部署與操作SparkLocal【任務(wù)場景】經(jīng)理:小張,現(xiàn)在我們的業(yè)務(wù)壓力很大,MapReduce任務(wù)經(jīng)常很長時(shí)間處理不完。有什么方法解決嗎?小張:根據(jù)我們的業(yè)務(wù)分析,Spark非常適合我們的計(jì)算任務(wù),它通過使用內(nèi)存進(jìn)行持久化存儲(chǔ)和計(jì)算,避免了磁盤上的中間數(shù)據(jù)存儲(chǔ)過程,將計(jì)算速度提高了數(shù)百倍。并且,Spark的流式計(jì)算也能解決我們的實(shí)時(shí)業(yè)務(wù)。經(jīng)理:那你研究一下,給我們演示一下把。小張:好的,我搭建一個(gè)驗(yàn)證環(huán)境。任務(wù)9.1部署與操作SparkLocal任務(wù)布置:了解Spark原理和體系架構(gòu),搭建SparkLocal環(huán)境并體驗(yàn)Spark運(yùn)行示例。知識(shí)點(diǎn)1:Spark原理與體系架構(gòu)快速、分布式、可擴(kuò)展、容錯(cuò)的集群計(jì)算框架;Spark是基于內(nèi)存計(jì)算的大數(shù)據(jù)分布式計(jì)算框架低延遲的復(fù)雜分析;Spark是HadoopMapReduce的替代方案。MapReudce不適合迭代和交互式任務(wù),Spark主要為交互式查詢和迭代算法設(shè)計(jì),支持內(nèi)存存儲(chǔ)和高效的容錯(cuò)恢復(fù)。Spark擁有MapReduce具有的優(yōu)點(diǎn),但不同于MapReduce,Spark中間輸出結(jié)果可以保存在內(nèi)存中,減少讀寫HDFS的次數(shù)知識(shí)點(diǎn)1:Spark原理與體系架構(gòu)知識(shí)點(diǎn)1:Spark原理與體系架構(gòu)Spark特點(diǎn):速度快一般情況下,對(duì)于迭代次數(shù)較多的應(yīng)用程序,Spark程序在內(nèi)存中的運(yùn)行速度是HadoopMapReduce運(yùn)行速度的100多倍,在磁盤上的運(yùn)行速度是HadoopMapReduce運(yùn)行速度的10多倍。知識(shí)點(diǎn)1:Spark原理與體系架構(gòu)Spark特點(diǎn):易用性Spark支持使用Scala、Python、Java及R語言快速編寫應(yīng)用。同時(shí)Spark提供超過80個(gè)高級(jí)運(yùn)算符,使得編寫并行應(yīng)用程序變得容易并且可以在Scala、Python或R的交互模式下使用Spark。知識(shí)點(diǎn)1:Spark原理與體系架構(gòu)Spark特點(diǎn):通用性
SparkCore:包含Spark的基本功能;尤其是定義RDD的API、操作以及這兩者上的動(dòng)作。其他Spark的庫都是構(gòu)建在RDD和SparkCore之上。SparkSQL:提供通過ApacheHive的SQL變體Hive查詢語言(HiveQL)與Spark進(jìn)行交互的API。每個(gè)數(shù)據(jù)庫表被當(dāng)做一個(gè)RDD,SparkSQL查詢被轉(zhuǎn)換為Spark操作。SparkStreaming:對(duì)實(shí)時(shí)數(shù)據(jù)流進(jìn)行處理和控制。SparkStreaming允許程序能夠像普通RDD一樣處理實(shí)時(shí)數(shù)據(jù)。MLlib:一個(gè)常用機(jī)器學(xué)習(xí)算法庫,算法被實(shí)現(xiàn)為對(duì)RDD的Spark操作。這個(gè)庫包含可擴(kuò)展的學(xué)習(xí)算法,比如分類、回歸等需要對(duì)大量數(shù)據(jù)集進(jìn)行迭代的操作。GraphX:控制圖、并行圖操作和計(jì)算的一組算法和工具的集合。GraphX擴(kuò)展了RDDAPI,包含控制圖、創(chuàng)建子圖、訪問路徑上所有頂點(diǎn)的操作。知識(shí)點(diǎn)1:Spark原理與體系架構(gòu)Spark特點(diǎn):隨處運(yùn)行用戶可以使用Spark的獨(dú)立集群模式運(yùn)行Spark,也可以在EC2(亞馬遜彈性計(jì)算云)、HadoopYARN或者ApacheMesos上運(yùn)行Spark。并且可以從HDFS、Cassandra、HBase、Hive、Tachyon和任何分布式文件系統(tǒng)讀取數(shù)據(jù)知識(shí)點(diǎn)1:Spark原理與體系架構(gòu)Spark體系架構(gòu):知識(shí)點(diǎn)1:Spark原理與體系架構(gòu)
Local模式即單機(jī)模式,用單機(jī)的多個(gè)線程來模擬Spark分布式計(jì)算,如果在命令語句中不加任何配置,則默認(rèn)是Local模式,在本地運(yùn)行。Local模式就是運(yùn)行在一臺(tái)計(jì)算機(jī)上的模式,通常就是用于在本機(jī)上練手和測(cè)試。local:所有計(jì)算都運(yùn)行在一個(gè)線程當(dāng)中,沒有任何并行計(jì)算,通常我們?cè)诒緳C(jī)執(zhí)行一些測(cè)試代碼,或者練手,就用這種模式;local[K]:指定使用幾個(gè)線程來運(yùn)行計(jì)算,比如local[4]就是運(yùn)行4個(gè)Worker線程。通常我們的Cpu有幾個(gè)Core,就指定幾個(gè)線程,最大化利用Cpu的計(jì)算能力。local[*]:這種模式直接按照Cpu最多Cores來設(shè)置線程數(shù)了SparkLocal模式部署過程部署SparkLocal模式按照以下3個(gè)步驟完成;準(zhǔn)備操作系統(tǒng)環(huán)境部署SparkLocal驗(yàn)證SparkLocal
SparkLocal模式部署過程準(zhǔn)備操作系統(tǒng)環(huán)境
操作系統(tǒng)準(zhǔn)備操作和前面部署Hadoop平臺(tái)相似都需要進(jìn)行以下準(zhǔn)備工作:
(1)關(guān)閉防火墻
(2)配置主機(jī)名、IP地址
(3)禁用selinux(4)安裝部署JDK
以上操作步驟和任務(wù)2.1基本一致,詳細(xì)步驟可參考任務(wù)2.1。SparkLocal模式部署過程2.部署SparkLocal下載并解壓spark安裝包下載spark-3.2.0-bin-hadoop3.2.tgz文件,解壓并放到/usr/local目錄下。[root@localhostlocal]#tar-zxvfspark-3.2.0-bin-hadoop3.2.tgz-C/usr/local[root@localhostlocal]#mvspark-3.2.0-bin-hadoop3.2spark
配置環(huán)境變量:vim/etc/profile在配置文件中增加以下3行:exportSPARK_HOME=/opt/sparkexportSPARK_CONF_DIR=$SPARK_HOME/confexportPATH=$PATH:$SPARK_HOME/bin使環(huán)境變量生效:
source/etc/profile為啟動(dòng)pyspark,安裝pyspark客戶端[root@localhost~]#yuminstallpython3[root@localhost~]#pip3installpysparkSparkLocal模式部署過程3.驗(yàn)證SparkLocal:運(yùn)行spark-submit命令提交運(yùn)行Spark任務(wù):–master指定Master的地址,默認(rèn)為Local–class:你的應(yīng)用的啟動(dòng)類(如org.apache.spark.examples.SparkPi)–deploy-mode:是否發(fā)布你的驅(qū)動(dòng)到worker節(jié)點(diǎn)(cluster)或者作為一個(gè)本地客戶端(client)(default:client)*–conf:任意的Spark配置屬性,格式key=value.如果值包含空格,可以加引號(hào)“key=value”[root@localhost~]#bin/spark-submit\--class<main-class>\--master<master-url>\--deploy-mode<deploy-mode>\--conf<key>=<value><application-jar>[application-0arguments]SparkLocal模式部署過程
Spark運(yùn)行示例,計(jì)算圓周率運(yùn)行結(jié)果“Piisroughly3.1415191415191415”,執(zhí)行成功。[root@localhost~]#]#spark-submit--classorg.apache.spark.examples.SparkPi--masterlocalexamples/jars/spark-examples*.jar102021-11-3023:04:53,331INFOspark.SparkContext:RunningSparkversion3.2.0……Piisroughly3.1415191415191415……任務(wù)總結(jié)本項(xiàng)目的主要任務(wù)是深入理解Spark的不同部署方式。完成SparkLocal模式安裝部署。掌握Spark本地模式運(yùn)行任務(wù)的方法。
北京匯智科教單元9
Spark計(jì)算框架部署任務(wù)9.2部署與操作SparkStandalone任務(wù)描述【任務(wù)場景】經(jīng)理:小張,我看了演示環(huán)境,感覺還不錯(cuò),你來部署一個(gè)獨(dú)立的Spark集群吧。我們把一些計(jì)算任務(wù)遷移上來。小張:好的,我們可以部署一個(gè)獨(dú)立的Spark集群來跑我們的業(yè)務(wù)。經(jīng)理:那你部署一個(gè)三節(jié)點(diǎn)的集群我們先遷移一些任務(wù)來體驗(yàn)一下效果。小張:好的。任務(wù)描述任務(wù)布置:了解Spark的運(yùn)行流程,部署一個(gè)三節(jié)點(diǎn)的SparkStandalone集群,并運(yùn)行驗(yàn)證示例知識(shí)點(diǎn)1:Spark運(yùn)行流程
為了在集群上運(yùn)行,SparkContext可以連接到多種類型的集群管理器
(Spark自己的獨(dú)立集群管理器(Standalone)、Mesos、YARN或Kubernetes),它們?cè)趹?yīng)用程序之間分配資源。連接后,Spark會(huì)在集群中的節(jié)點(diǎn)上獲取執(zhí)行程序,這些進(jìn)程為您的應(yīng)用程序運(yùn)行計(jì)算和存儲(chǔ)數(shù)據(jù)。接下來,它將您的應(yīng)用程序代碼(由傳遞給SparkContext的JAR或Python文件定義)發(fā)送到執(zhí)行程序。最后,SparkContext將任務(wù)發(fā)送給執(zhí)行程序以運(yùn)行。知識(shí)點(diǎn)1:Spark運(yùn)行流程每個(gè)應(yīng)用程序都有自己的執(zhí)行程序進(jìn)程,這些進(jìn)程在整個(gè)應(yīng)用程序的持續(xù)時(shí)間內(nèi)保持運(yùn)行并在多個(gè)線程中運(yùn)行任務(wù)。這有利于在調(diào)度端(每個(gè)驅(qū)動(dòng)程序調(diào)度自己的任務(wù))和執(zhí)行端(來自不同應(yīng)用程序的任務(wù)在不同的JVM中運(yùn)行)將應(yīng)用程序彼此隔離。但是,這也意味著如果不將數(shù)據(jù)寫入外部存儲(chǔ)系統(tǒng),就無法在不同的Spark應(yīng)用程序(SparkContext的實(shí)例)之間共享數(shù)據(jù)。Spark與底層集群管理器無關(guān)。只要能夠獲取到executor進(jìn)程,并且這些進(jìn)程之間相互通信,就可以正常運(yùn)行,例如Spark可以基于不同的集群管理器(Mesos或Yarn等)上運(yùn)行。驅(qū)動(dòng)程序必須在其整個(gè)生命周期內(nèi)偵聽并接受來自其執(zhí)行程序的傳入連接。因此,驅(qū)動(dòng)程序必須可從工作節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)尋址。因?yàn)轵?qū)動(dòng)程序在集群上調(diào)度任務(wù),所以它應(yīng)該在工作節(jié)點(diǎn)附近運(yùn)行,最好在同一個(gè)局域網(wǎng)上。如果您想遠(yuǎn)程向集群發(fā)送請(qǐng)求,最好向驅(qū)動(dòng)程序打開RPC并讓它從附近提交操作,而不是運(yùn)行遠(yuǎn)離工作節(jié)點(diǎn)的驅(qū)動(dòng)程序。知識(shí)點(diǎn)1:Spark運(yùn)行流程Spark中主要包括五個(gè)組件:Driver、Master、Worker、Executor和Task:Driver:是一個(gè)進(jìn)程,我們編寫的spark程序運(yùn)行在driver上,由dirver進(jìn)程執(zhí)行,driver是作業(yè)的主進(jìn)程,具有main函數(shù),是程序的入口點(diǎn),driver進(jìn)程啟動(dòng)后,向master發(fā)送請(qǐng)求,進(jìn)行注冊(cè),申請(qǐng)資源,在后面的executor啟動(dòng)后,會(huì)向dirver進(jìn)行反注冊(cè),dirver注冊(cè)了executor后,正式執(zhí)行spark程序,讀取數(shù)據(jù)源,創(chuàng)建rdd或dataframe,生成stage,提交task到executor。Master:是個(gè)進(jìn)程,主要負(fù)責(zé)資源的調(diào)度和分配,集群的監(jiān)控等。Worker:是個(gè)進(jìn)程,主要負(fù)責(zé)兩個(gè),一個(gè)是用自己的內(nèi)存存儲(chǔ)RDD的某個(gè)或某些partition,另一個(gè)是啟動(dòng)其他進(jìn)程和線程,對(duì)RDD上的partition進(jìn)行處理和計(jì)算。Executor:是個(gè)進(jìn)程,一個(gè)Executor執(zhí)行多個(gè)Task,多個(gè)Executor可以并行執(zhí)行,可以通過-num-executors來指定Executor的數(shù)量,但是經(jīng)過測(cè)試,Executor最大為集群可用的cpu核數(shù)減1,剩下一個(gè)核可能是用來作為master,另外如果master為yarn,則實(shí)際可用cpu核數(shù)為yarn的虛擬核數(shù),可以通過yarn.nodemanager.resource.cpu-vcores設(shè)定,虛擬核數(shù)可以大于物理核數(shù)。Task:是個(gè)線程,具體的spark任務(wù)是在Task上運(yùn)行的,某些并行的算子,有多少個(gè)分區(qū)就有多少個(gè)task,但是有些算子像take這樣的只有一個(gè)task。知識(shí)點(diǎn)1:Spark運(yùn)行流程
當(dāng)一個(gè)Spark應(yīng)用被提交時(shí),首先需要為這個(gè)應(yīng)用構(gòu)建起基本的運(yùn)行環(huán)境,即由任務(wù)控制節(jié)點(diǎn)(Driver)創(chuàng)建一個(gè)SparkContext,由SparkContext負(fù)責(zé)和資源管理器(ClusterManager)的通信以及進(jìn)行資源的申請(qǐng)、任務(wù)的分配和監(jiān)控等。SparkContext會(huì)向資源管理器注冊(cè)并申請(qǐng)運(yùn)行Executor的資源;
資源管理器為Executor分配資源,并啟動(dòng)Executor進(jìn)程,Executor運(yùn)行情況將隨著“心跳”發(fā)送到資源管理器上;知識(shí)點(diǎn)1:Spark運(yùn)行流程
當(dāng)一個(gè)Spark應(yīng)用被提交時(shí),首先需要為這個(gè)應(yīng)用構(gòu)建起基本的運(yùn)行環(huán)境,即由任務(wù)控制節(jié)點(diǎn)(Driver)創(chuàng)建一個(gè)SparkContext,由SparkContext負(fù)責(zé)和資源管理器(ClusterManager)的通信以及進(jìn)行資源的申請(qǐng)、任務(wù)的分配和監(jiān)控等。SparkContext會(huì)向資源管理器注冊(cè)并申請(qǐng)運(yùn)行Executor的資源;資源管理器為Executor分配資源,并啟動(dòng)Executor進(jìn)程,Executor運(yùn)行情況將隨著“心跳”發(fā)送到資源管理器上;
SparkContext根據(jù)RDD的依賴關(guān)系構(gòu)建DAG圖,DAG圖提交給DAG調(diào)度器(DAGScheduler)進(jìn)行解析,將DAG圖分解成多個(gè)“階段”(每個(gè)階段都是一個(gè)任務(wù)集),并且計(jì)算出各個(gè)階段之間的依賴關(guān)系,然后把一個(gè)個(gè)“任務(wù)集”提交給底層的任務(wù)調(diào)度器(TaskScheduler)進(jìn)行處理;Executor向SparkContext申請(qǐng)任務(wù),任務(wù)調(diào)度器將任務(wù)分發(fā)給Executor運(yùn)行,同時(shí),SparkContext將應(yīng)用程序代碼發(fā)放給Executor;
任務(wù)在Executor上運(yùn)行,把執(zhí)行結(jié)果反饋給任務(wù)調(diào)度器,然后反饋給DAG調(diào)度器,運(yùn)行完畢后寫入數(shù)據(jù)并釋放所有資源。知識(shí)點(diǎn)1:Spark運(yùn)行流程Spark常用術(shù)語術(shù)語描述Application基于Spark構(gòu)建的用戶程序。由集群上的驅(qū)動(dòng)程序和執(zhí)行程序組成。Applicationjar包含用戶的Spark應(yīng)用程序的jar。Driverprogram運(yùn)行應(yīng)用程序的main()函數(shù)并創(chuàng)建SparkContext的過程Clustermanager用于獲取集群資源的外部服務(wù)(例如獨(dú)立管理器、Mesos、YARN、Kubernetes)Deploymode區(qū)分驅(qū)動(dòng)程序進(jìn)程運(yùn)行的位置。在“集群”模式下,框架在集群內(nèi)部啟動(dòng)驅(qū)動(dòng)程序。在“客戶端”模式下,提交者在集群外啟動(dòng)驅(qū)動(dòng)程序。Workernode任何可以在集群中運(yùn)行應(yīng)用程序代碼的節(jié)點(diǎn)Executor為工作節(jié)點(diǎn)上的應(yīng)用程序啟動(dòng)的進(jìn)程,該進(jìn)程運(yùn)行任務(wù)并將數(shù)據(jù)保存在內(nèi)存或磁盤存儲(chǔ)中。每個(gè)應(yīng)用程序都有自己的執(zhí)行程序。Task將發(fā)送給一個(gè)執(zhí)行者的工作單元。Job由多個(gè)任務(wù)組成的并行計(jì)算,這些任務(wù)響應(yīng)Spark操作(例如save,collect);我們會(huì)在驅(qū)動(dòng)程序日志中看到這個(gè)術(shù)語。Stage每個(gè)作業(yè)被分成更小的任務(wù)集,稱為階段,這些任務(wù)相互依賴(類似于MapReduce中的map和reduce階段);我們會(huì)在驅(qū)動(dòng)程序日志中看到這個(gè)術(shù)語。知識(shí)點(diǎn)2:
Spark配置文件與配置參數(shù)Spark提供三個(gè)位置來配置系統(tǒng):Spark屬性:控制?部分的應(yīng)?程序參數(shù),可以?SparkConf對(duì)象或者Java系統(tǒng)屬性設(shè)置環(huán)境變量:可以通過每個(gè)節(jié)點(diǎn)的conf/spark-env.sh腳本設(shè)置。例如IP地址、端?等信息?志配置:可以通過perties配置Spark屬性控制大多數(shù)應(yīng)用程序設(shè)置,并為每個(gè)應(yīng)用程序單獨(dú)配置。這些屬性可以直接在設(shè)置SparkConf傳遞給
SparkContext。SparkConf允許您通過該set()方法配置一些通用屬性(例如主URL和應(yīng)用程序名稱),以及任意鍵值對(duì)。代碼中的”spark://X.X.X.X:7077”是SparkMaster的服務(wù)地址,默認(rèn)端口為”7077”。valconf=newSparkConf().setMaster("spark://X.X.X.X:7077").setAppName("CountingSheep")valsc=newSparkContext(conf)知識(shí)點(diǎn)2:
Spark配置文件與配置參數(shù)
Sparkshell和spark-submit工具支持兩種動(dòng)態(tài)加載配置的方式。第一個(gè)是命令行參數(shù),例如--master,如下所示。spark-submit可以使用該--conf/-c標(biāo)志接受任何Spark屬性,但對(duì)在啟動(dòng)Spark應(yīng)用程序中起作用的屬性使用特殊標(biāo)志。
spark-submit還將從配置文件conf/spark-defaults.conf中讀取配置選項(xiàng),其中每一行由一個(gè)鍵和一個(gè)由空格分隔的值組成。[root@master01~]#spark-submit--name"Myapp"--masterspark://X.X.X.X:7077--confspark.eventLog.enabled=false--conf"spark.executor.extraJavaOptions=-XX:+PrintGCDetailss"myApp.jarspark.masterspark://X.X.X>X:7077spark.executor.memory4gspark.eventLog.enabledtruespark.serializerorg.apache.spark.serializer.KryoSerializer知識(shí)點(diǎn)2:
Spark配置文件與配置參數(shù)Spark
常用配置參數(shù)Spark屬性主要可以分為兩種:一種是和deploy相關(guān)的,比如“spark.driver.memory”,“spark.executor.instances”,這類屬性在Spark運(yùn)行時(shí)通過編程設(shè)置時(shí)會(huì)不起作用,其值取決于您選擇的集群管理器和部署模式,因此建議通過配置文件或spark-submit命令行選項(xiàng)進(jìn)行設(shè)置;另一個(gè)主要是關(guān)于Spark運(yùn)行時(shí)的控制,比如“spark.task.maxFailures”,這種屬性可以任意設(shè)置。配置項(xiàng)配置內(nèi)容說明(none)應(yīng)用程序名稱spark.driver.cores1集群模式下,驅(qū)動(dòng)程序進(jìn)程核心數(shù)spark.driver.maxResultSize1g每個(gè)Spark操作的所有分區(qū)序列號(hào)結(jié)果內(nèi)存配置spark.driver.memory1g驅(qū)動(dòng)程序進(jìn)程的內(nèi)存配置spark.executor.cores1在yarn模式下每個(gè)執(zhí)行器上使用的核心數(shù),在獨(dú)立模式下使用所有核心spark.executor.memory1g執(zhí)行程序進(jìn)程使用的內(nèi)存配置presstrue是否壓縮map輸出文件spark.shuffle.file.buffer32k每個(gè)shuffle文件輸出流的內(nèi)存緩沖區(qū)大小知識(shí)點(diǎn)2:
Spark配置文件與配置參數(shù)SparkWorker節(jié)點(diǎn)配置
要使用啟動(dòng)腳本啟動(dòng)Spark獨(dú)立集群,我們需要在Spark目錄中創(chuàng)建一個(gè)名為conf/workers的文件,該文件必須包含我們打算啟動(dòng)Spark工作程序的所有機(jī)器的主機(jī)名,每行一個(gè)。如果conf/workers不存在,則啟動(dòng)腳本默認(rèn)為單臺(tái)機(jī)器(localhost),這可以用于使用本機(jī)測(cè)試。
在啟動(dòng)集群時(shí),主機(jī)通過ssh訪問每個(gè)工作機(jī)。默認(rèn)情況下,ssh并行運(yùn)行,需要設(shè)置無密碼(使用私鑰)訪問。如果我們沒有無密碼設(shè)置,可以設(shè)置環(huán)境變量SPARK_SSH_FOREGROUND并為每個(gè)工作人員連續(xù)提供密碼。知識(shí)點(diǎn)2:
Spark配置文件與配置參數(shù)Spark
啟動(dòng)命令設(shè)置conf/workers配置文件后,我們可以使用以下shell腳本啟動(dòng)或停止集群,為了和Hadoop集群啟動(dòng)等命令區(qū)分開,建議在SPARK_HOME/sbin目錄下使用以下命令:sbin/start-master.sh-在執(zhí)行腳本的機(jī)器上啟動(dòng)主實(shí)例。sbin/start-workers.sh-在conf/workers文件中指定的每臺(tái)機(jī)器上啟動(dòng)一個(gè)工作實(shí)例。sbin/start-worker.sh-在執(zhí)行腳本的機(jī)器上啟動(dòng)一個(gè)工作實(shí)例。sbin/start-all.sh-如上所述啟動(dòng)一個(gè)主節(jié)點(diǎn)和多個(gè)工作節(jié)點(diǎn)。sbin/stop-master.sh-停止通過sbin/start-master.sh腳本啟動(dòng)的master。sbin/stop-worker.sh-停止執(zhí)行腳本的機(jī)器上的所有工作實(shí)例。sbin/stop-workers.sh-停止conf/workers文件中指定的機(jī)器上的所有工作實(shí)例。sbin/stop-all.sh-如上所述停止主節(jié)點(diǎn)和工作節(jié)點(diǎn)。這些腳本必須在您想要運(yùn)行Sparkmaster主節(jié)點(diǎn)機(jī)器上執(zhí)行,而不是在本地從節(jié)點(diǎn)機(jī)器上運(yùn)行。SparkStandalone部署流程1.SparkStandalone部署架構(gòu)本次部署3節(jié)點(diǎn)SparkStandalone。1個(gè)master節(jié)點(diǎn),2個(gè)worker節(jié)點(diǎn)。節(jié)點(diǎn)類型節(jié)點(diǎn)名稱IP地址組件Mastermaster0114MasterWorkerworker0115workerWorkerworker0216workerSparkStandalone部署流程2.準(zhǔn)備操作系統(tǒng)環(huán)境
操作系統(tǒng)準(zhǔn)備操作和前面部署Hadoop平臺(tái)相似都需要進(jìn)行以下準(zhǔn)備工作:
(1)關(guān)閉防火墻
(2)配置主機(jī)名、IP地址
(3)禁用selinux
(4)實(shí)現(xiàn)各節(jié)點(diǎn)時(shí)鐘同步
(5)實(shí)現(xiàn)各節(jié)點(diǎn)SSH免密登錄(6)安裝部署JDK
以上操作步驟和任務(wù)3.1搭建Hadoop集群的操作系統(tǒng)環(huán)境準(zhǔn)備基本一致,詳細(xì)步驟可參考任務(wù)3.1。SparkStandalone部署流程3.部署SparkStandalone(1)下載并解壓spark安裝包在master01節(jié)點(diǎn)上。下載spark-3.2.0-bin-hadoop3.2.tgz文件,解壓并放到/opt/目錄下。[root@localhost~]#tar-zxvfspark-3.2.0-bin-hadoop3.2.tgz[root@localhost~]#mvspark-3.2.0-bin-hadoop3.2/opt/spark(2)修改Spark配置文件在master節(jié)點(diǎn)修改spark-defaults.conf[root@master01~]#vim/opt/spark/conf/spark-defaults.confspark.masterspark://master01:7077SparkStandalone部署流程(3)將配置文件分發(fā)到其他機(jī)器在master01節(jié)點(diǎn)上通過spc分發(fā)spark安裝配置文件。[root@master01~]#scp-r/opt/sparkworker01:/opt[root@master01~]#scp-r/opt/sparkworker02:/opt(4)配置執(zhí)行spark的環(huán)境變量我們?cè)趍aster01節(jié)點(diǎn)啟動(dòng)spark任務(wù),在master01節(jié)點(diǎn)配置profile文件[root@master01~]#vim/etc/profileSPARK_HOME=/opt/sparkSPARK_CONF_dir=$SPARK_HOME/confexportPATH=$PATH:$SPARK_HOME/bin[root@master01~]#source/etc/profileSparkStandalone部署流程4.啟動(dòng)sparkStandalone集群[root@master01~]#/opt/spark/sbin/start-all.sh檢查各節(jié)點(diǎn)spark運(yùn)行狀態(tài)[root@master01~]#jps4152Master5420Jps[root@worker01~]#jps7355Worker7758Jps[root@worker02~]#jps10116Worker10517JpsSparkStandalone部署流程5.驗(yàn)證sparkStandalone集群執(zhí)行SparkPi案例驗(yàn)證spark運(yùn)行狀態(tài)[root@master01~]#/opt/spark/bin/run-exampleSparkPi1021/12/0101:46:38WARNNativeCodeLoader:Unabletoloadnative-hadooplibraryforyourplatform...usingbuiltin-javaclasseswhereapplicableUsingSpark'sdefaultlog4jprofile:org/apache/spark/perties……Piisroughly3.142883142883143……運(yùn)行結(jié)果“Piisroughly3.142883142883143”,執(zhí)行成功。SparkStandalone部署流程在瀏覽器輸入:master01:8080,可以通過WebUI查看到剛執(zhí)行的任務(wù)”SparkPi”,任務(wù)狀態(tài)為”FINISHED”
任務(wù)總結(jié)本項(xiàng)目的主要任務(wù)是理解SparkStandalone模式的部署原理。完成Spark獨(dú)立模式安裝部署。
掌握Spark的啟動(dòng)和訪問方法。北京匯智科教單元9
Spark計(jì)算框架部署任務(wù)9.3部署與操作SparkonYARN任務(wù)9.3部署與操作SparkonYARN【任務(wù)場景】經(jīng)理:小張,你把Spark集群部署到Hadoop集群吧,這樣能夠充分利用計(jì)算資源。小張:如果將Spark部署到Hadoop集群的話,我們可以使用SparkonYARN模式,這種模式下,直接在HadoopYARN中啟動(dòng)Spark任務(wù)。經(jīng)理:那就部署SparkonYARN模式吧。小張:好的。任務(wù)9.3部署與操作SparkonYARN任務(wù)布置:配置SparkonYARN模式,提交Spark任務(wù)到Y(jié)ARN中,并從YARN中查看計(jì)算任務(wù)。知識(shí)點(diǎn)1:SparkonYARN運(yùn)行原理
SparkonYARN是工作中或生產(chǎn)上用的非常多的一種運(yùn)行模式。其主要優(yōu)勢(shì)是可以將Spark、MapReduce、Flink等框架跑在同一個(gè)YARN集群中,使用YARN統(tǒng)一管理控制計(jì)算資源,多種計(jì)算框架可以共享集群資源,按需分配,這樣可以提升整個(gè)資源的利用率。
HDFSYARN:資源管理和調(diào)度框架MapReduceSparkStormFlink...知識(shí)點(diǎn)1:SparkonYARN運(yùn)行原理
當(dāng)在YARN上運(yùn)行Spark作業(yè),每個(gè)Sparkexecutor作為一個(gè)YARN容器(container)運(yùn)行。Spark可以使得多個(gè)Tasks在同一個(gè)容器(container)里面運(yùn)行。這是個(gè)很大的優(yōu)點(diǎn)。
有兩種部署模式可用于在YARN上啟動(dòng)Spark應(yīng)用程序。cluster模式和client模式。
在cluster模式下,Spark驅(qū)動(dòng)程序在集群上由YARN管理的應(yīng)用程序主進(jìn)程內(nèi)運(yùn)行,客戶端可以在啟動(dòng)應(yīng)用程序后離開,Cluster模式主要用于生產(chǎn)環(huán)境中,因?yàn)镈river運(yùn)行在Yarn集群中某一臺(tái)nodeManager中,每次提交任務(wù)的Driver所在的機(jī)器都是隨機(jī)的,不會(huì)產(chǎn)生某一臺(tái)機(jī)器網(wǎng)卡流量激增的現(xiàn)象,缺點(diǎn)是任務(wù)提交后不能看到日志。只能通過yarn查看日志。在client模式中,driver運(yùn)行在client進(jìn)程中,applicationmaster只用于向YARN請(qǐng)求資源。client模式適用于測(cè)試場景,因?yàn)镈river運(yùn)行在本地,任務(wù)執(zhí)行后可直接看到執(zhí)行結(jié)果,但是此模式下Driver會(huì)與yarn集群中的Executor進(jìn)行大量的通信,會(huì)造成客戶機(jī)網(wǎng)卡流量的大量增加。知識(shí)點(diǎn)1:SparkonYARN運(yùn)行原理Yarn-cluster模式提交任務(wù)流程如下:1.客戶機(jī)提交Application應(yīng)用程序,發(fā)送請(qǐng)求到RS(ResourceManager),請(qǐng)求啟動(dòng)AM(ApplicationMaster)。2.RS收到請(qǐng)求后隨機(jī)在一臺(tái)NM(NodeManager)上啟動(dòng)AM(相當(dāng)于Driver端)。3.AM啟動(dòng),AM發(fā)送請(qǐng)求到RS,請(qǐng)求一批container用于啟動(dòng)Executor。4.RS返回一批NM節(jié)點(diǎn)給AM。5.AM連接到NM,發(fā)送請(qǐng)求到NM啟動(dòng)Executor。6.Executor反向注冊(cè)到AM所在的節(jié)點(diǎn)的Driver。Driver發(fā)送task到Executor。知識(shí)點(diǎn)1:SparkonYARN運(yùn)行原理Yarn-client模式提交任務(wù)流程:1.客戶端提交一個(gè)Application,在客戶端啟動(dòng)一個(gè)Driver進(jìn)程。2.Driver進(jìn)程會(huì)向RS(ResourceManager)發(fā)送請(qǐng)求,啟動(dòng)AM(ApplicationMaster)。3.RS收到請(qǐng)求,隨機(jī)選擇一臺(tái)NM(NodeManager)啟動(dòng)AM。這里的NM相當(dāng)于Standalone中的Worker節(jié)點(diǎn)。4.AM啟動(dòng)后,會(huì)向RS請(qǐng)求一批container資源,用于啟動(dòng)Executor。5.RS會(huì)找到一批NM返回給AM,用于啟動(dòng)Executor。AM會(huì)向NM發(fā)送命令啟動(dòng)Executor。6.Executor啟動(dòng)后,會(huì)反向注冊(cè)給Driver,Driver發(fā)送task到Executor,執(zhí)行情況和結(jié)果返回給Driver端。知識(shí)點(diǎn)1:SparkonYARN運(yùn)行原理
在YARN上啟動(dòng)Spark,需配置HADOOP_CONF_DIR或YARN_CONF_DIR指向包含Hadoop集群配置文件的目錄。這些配置用于寫入HDFS并連接到Y(jié)ARNResourceManager。此目錄中包含的配置將分發(fā)到Y(jié)ARN集群,以便應(yīng)用程序使用的所有容器都使用相同的配置。
與Spark支持的其他集群管理器在--master
參數(shù)中指定master的地址不同,在YARN模式下,ResourceManager的地址是從Hadoop配置中獲取的。因此,--master參數(shù)為yarn?;蛑苯有薷呐渲梦募park-defaults.conf中的“spark.master”,將模式配置配置為yarn。SparkonYARN部署流程1.檢查依賴的Hadoop環(huán)境我們需要將Spark部署在HadoopMaster節(jié)點(diǎn)上用來提交任務(wù),首先檢查已部署Hadoop環(huán)境并統(tǒng)計(jì)集群信息。節(jié)點(diǎn)類型節(jié)點(diǎn)名稱IP地址組件Mastermaster0114NameNodeSecondaryNameNodeResourceManagerSpark客戶端Workerworker0115DataNodeNodeManagerWorkerworker0216DataNodeNodeManagerSparkonYARN部署流程2.在Hadoop集群的Master節(jié)點(diǎn)上部署Spark。(1)下載并解壓Spark安裝包下載spark-3.2.0-bin-hadoop3.2.tgz文件,解壓并放到/opt/目錄下。[root@master01~]#tar-zxvfspark-3.2.0-bin-hadoop3.2.tgz[root@master01~]#mvspark-3.2.0-bin-hadoop3.2/opt/spark(2)準(zhǔn)備spark-shell運(yùn)行所需要的jar包[root@master01~]#hdfsdfs-mkdir/spark_jars[root@master01~]#hdfsdfs-put
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美容美發(fā)店員工入股2025年度全新合作框架合同匯編
- 2025年度高端服裝店品牌代理權(quán)轉(zhuǎn)讓合同范本
- 砌體抹灰勞務(wù)分包合同書
- 工業(yè)生產(chǎn)過程質(zhì)量控制要點(diǎn)
- 農(nóng)業(yè)養(yǎng)殖業(yè)智能化養(yǎng)殖管理系統(tǒng)建設(shè)
- 新能源車充電樁建設(shè)合同
- 汽車工程車輛維護(hù)與故障診斷技能考試試題集
- 中學(xué)生物多樣性的感悟
- 城市商業(yè)管理系統(tǒng)升級(jí)服務(wù)協(xié)議
- 給排水安裝工程勞務(wù)合同
- 孕前口腔護(hù)理保健
- 《民航服務(wù)與溝通學(xué)》課件-第1講 服務(wù)與民航服務(wù)的概念
- 大型養(yǎng)路機(jī)械司機(jī)(打磨車)高級(jí)工技能鑒定考試題庫(含答案)
- 車輛使用不過戶免責(zé)協(xié)議書范文范本
- 蟾蜍毒抗病毒藥物篩選
- DB11T 2033-2022 餐廚垃圾源頭減量操作要求
- 1.2 歌曲 《春天來了》 課件(11張)
- 【人教版】pep六年級(jí)英語下全冊(cè)教案(表格版)
- 護(hù)理培訓(xùn)師競聘
- 北師大版小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)同步課時(shí)練習(xí)試題含答案(全冊(cè))
- 4《我們的公共生活》第一課時(shí) 教學(xué)設(shè)計(jì)-2023-2024學(xué)年道德與法治五年級(jí)下冊(cè)統(tǒng)編版
評(píng)論
0/150
提交評(píng)論