Spark開發-Yarn cluster模式
1、部署及程式執行
YARN cluster模型,顧名思義就是通過Hadoop YARN框架來排程spark應用所需的資源,要將Spark叢集執行在YARN模式下,首先需要部署一個YARN叢集提供該模式使用,在實際應用中,這兩者的因果關係往往是反過來的,這是因為使用者有一個Hadoop YARN叢集,因此希望將spark也納入YARN的排程管理中,這樣有利於系統的資源共享,
打包
對於spark來說,需要做的準備工作包括通過sbt assembly 命令將所有的依賴關係打成一個大的jar包供YARN排程框架使用,以Hadoop2.6為例,這個jar包可以通過如下命令獲得
SPARK_HADOOP_VERSION=2.6.0 SPARK_YARN=true sbt/sbt assembly
所獲得的jar包,可以上傳到HDFS中,也可以放在本地,同樣的,你的應用程式本身也需要打包成jar包供YARN排程框架使用。
配置
對於YARN模式來說,還有一些特定的引數可以通過conf檔案或者程式設計直接配置,用於調整執行時的行為,如下所示
1、spark.yarn.applicationMaster.waitTries:嘗試等待spark master啟動和初始化完成的次數,預設為10
2、spark.yarn.submit.file.replication:spark應用程式的依賴檔案上傳到HDFS時,在HDFS中的備份的拷貝數量,這些檔案包括spark的jar包,應用程式的jar包,其他作為distribute cache使用的檔案等,通常,如果你的叢集節點數越多,相應地就需要設定越多的拷貝數以加快這些檔案的分發
3、spark.yarn.preserve.staging.files:在應用程式結束後是否保留上述上傳的檔案
4、spark.yarn.scheduler.heartbeat.interval-ms:spark application master向YARN resourcemanager 傳送心跳的時間間隔,預設是5秒
5、spark.yarn.max.worker.failures:在認為一個應用程式執行失敗之前,允許執行失敗的worker的最大數量
在YARN cluster模式下,需要通過額外的輔助程式來啟動應用,其啟動方式如下
SPARK_JAR=<SPARK_ASSEMBLY_JAR_FILE> ./bin/spark-class org.apache.spark.deploy.yarn.Client \
--jar <YOUR_APP_JAR_FILE> \
--class <APP_MAIN_CLASS> \
--args <APP_MAIN_ARGUMENTS> \
--num-workers <NUMBER_OF_WORKER_MACHINES> \
--master-class <ApplicationMaster_CLASS> \
--master-memory <MEMORY_FOR_MASTER> \
--worker-memory <MEMORY_PER_WORKER> \
--worker-cores <CORES_PER_WORKER> \
--name <application_name> \
--queue <queue_name> \
--addJars <any_local_files_used_in_SparkContext.addJar> \
--files <files_for_distributed_cache> \
--archives <archives_for_distributed_cache>
內部實現原理
下圖是YARN cluster 模式原理框圖,相對於其他模式有些特殊,它需要由外部程式輔助啟動APP,使用者的應用程式通過輔助的YARN client類啟動
client類通過YARN client api提交請求在Hadoop叢集上啟動一個spark applicationmaster,spark applicationmaster首先註冊自己為一個YARN applicationmaster ,之後啟動使用者程式,sparkcontext在使用者程式中初始化時,使用coarseGrainedSchedulerBackend配合YARNClusterScheduler,YARNClusterScheduler只是對TaskScheduler的一個簡單包裝,增加了對executor的等待邏輯等
根據client類傳遞的引數,spark applicationmaster 通過YARN resourcemanager/nodemanager的介面在叢集中啟動若干個container,用於執行coarseGrainedExecutorBackend。coarseGrainedExecutorBackend在啟動過程中會向coarseGrainedSchedulerBackend註冊,之後的任務排程流程同上述其他cluster模式
相關文章
- Spark:Yarn-client與Yarn-clusterSparkYarnclient
- 部署Spark2.2叢集(on Yarn模式)SparkYarn模式
- Spark on Yarn 和Spark on MesosSparkYarn
- 12 Spark on YARNSparkYarn
- Spark on Yarn 實踐SparkYarn
- 搭建spark on yarn 叢集SparkYarn
- spark 與 yarn 結合SparkYarn
- Spark 原始碼系列(七)Spark on yarn 具體實現Spark原始碼Yarn
- Spark原始碼解析-Yarn部署流程(ApplicationMaster)Spark原始碼YarnAPPAST
- Spark UI (基於Yarn) 分析與定製SparkUIYarn
- 01-Spark的Local模式與應用開發入門Spark模式
- Redis Cluster叢集模式部署Redis模式
- Spark 從零到開發(五)初識Spark SQLSparkSQL
- Spark面試題(七)——Spark程式開發調優Spark面試題
- Redis Cluster叢集模式部署XRedis模式
- 【Flink】深入理解Flink-On-Yarn模式Yarn模式
- IDEA開發Spark應用並提交本地Spark 2.1.0 standIdeaSpark
- eclipse Java Spark local模式EclipseJavaSpark模式
- Spring Boot整合Redis叢集(Cluster模式)Spring BootRedis模式
- Spark不同Cluster Manager下的資料本地性表現Spark
- spark-submit提交到yarn中執行的log怎麼看?SparkMITYarn
- spark 基礎開發 Tips總結Spark
- Spark 效能調優--開發階段Spark
- Spark叢集部署(standLone)模式Spark模式
- Spark Standalone模式 高可用部署Spark模式
- redis偽叢集配置Cluster叢集模式Redis模式
- Flink啟動Yarn session模式的部署報錯YarnSession模式
- CentOS6.5基於Hadoop使用者的Yarn偽分散式部署(a Single Node Cluster)CentOSHadoopYarn分散式
- 大資料開發-Spark-初識Spark-Graph && 快速入門大資料Spark
- IDEA開發Spark應用實戰(Scala)IdeaSpark
- Spark - [03] 資源排程模式Spark模式
- redis Cluster模式叢集 多機器 docker 部署Redis模式Docker
- 【Spark篇】---SparkStreaming+Kafka的兩種模式receiver模式和Direct模式SparkKafka模式
- chrome開發者模式怎麼開啟 chrome開發者模式在哪開啟Chrome模式
- spark 2.1.0 standalone模式配置&&打包jar包透過spark-submit提交Spark模式JARMIT
- Spark2.4.5叢集安裝與本地開發Spark
- 大資料開發-Spark Join原理詳解大資料Spark
- cdh版spark on yarn與idea直連操作sql遇到的一些問題SparkYarnIdeaSQL
- 微商複合模式系統開發(開發系統模式)模式