spark学习笔记(二)----运行模式、spark-submit

spark运行模式
1、application program组成
Job:包含多个Task 组成的并行计算,跟Spark action对应
Stage:Job 的调度单位,对应于TaskSet
Taskset:一组关联的、相互之间没有shuffle 依赖关系的任务组成的任务集
Task:被送到某个executor 上的工作单元
在这里插入图片描述
2、运行流程(以standalone为例)
在这里插入图片描述
程序提交,spark driver内部RDD graph形成RDd相关联图,提交job到DAG scheduler,DAG scheduler将stage分片成taskset提交到spark worker node的Task Threads,由task thread执行tast任务,block manager监控数据块信息。
在这里插入图片描述
DAGScheduler:构建Stage—碰到shuffle就split,记录哪个RDD 或者Stage 输出被物化,重新提交shuffle 输出丢失的stage,将Taskset 传给底层调度器spark-cluster TaskScheduler
yarn-cluster YarnClusterScheduler,yarn-client YarnClientClusterScheduler
TaskScheduler:为每一个TaskSet 构建一个TaskSetManager 实例管理这个TaskSet 的生命周期,数据本地性决定每个Task 最佳位置(process-local, node-local, rack-local and then and any),提交taskset( 一组task) 到集群运行并监控,推测执行,碰到straggle 任务放到别的节点上重试,出现shuffle 输出lost 要报告fetch failed 错误。
ScheduleBacked:实现与底层资源调度系统的交互(YARN,mesos等),配合TaskScheduler实现具体任务执行所需的资源分配(核心接口receiveOffers)
在这里插入图片描述
3、运行模式
在这里插入图片描述
4、standalone运行模式
在这里插入图片描述
首先,worker向master注册,然后app向master申请资源如cpu数等。Master启动worker上的executor,准备好后app提交task到worker。
在这里插入图片描述
在这里插入图片描述
1)集群配置

slaves–指定在哪些节点上运行worker

spark-defaults.conf—spark提交job时的默认配置

spark-env.sh—spark的环境变量
2)提交
./bin/spark-submit --master spark://client:7077 --class org.apache.spark.examples.SparkPi lib/spark-examples-1.6.1-hadoop2.6.0.jar
3)HA
Standby masters with Zookeeper
./start-all.sh启动后,再选择一个节点启动master,./start-master.sh

Single-Node Recover with Local File System
5、Local模式
在这里插入图片描述
Local,本地模式,默认情况是本地模式运行,如运行的spark-shell。LocalBackend响应Scheduler的receiveOffers请求,根据可用的CPU核的设定值[N]直接生成CPU资源返回给Scheduler,并通过Executor类在线程池中依次启动和运行Scheduler返回的任务列表,其核心事件循环由内部类LocalActor以Akka Actor的消息处理形式来实现

6、local cluster模式
在这里插入图片描述
伪分布式模式启动两个Worker,每个Worker管理两个CPU核和1024MB的内存。LocalBackend响应Scheduler的receiveOffers请求,根据可用的CPU核的设定值[N]直接生成CPU资源返回给Scheduler,并通过Executor类在线程池中依次启动和运行Scheduler返回的任务列表,其核心事件循环由内部类LocalActor以Akka Actor的消息处理形式来实现

7、spark on yarn
安装配置:配置HADOOP_CONF_DIR或者YARN_CONF_DIR环境变量,让Spark知道Yarn的配置信息。有三种方式:
配置在spark-env.sh中,在提交Spark应用之前export,配置到操作系统的环境变量中

如果使用的是HDP,请在spark-defaults.conf中加入:
spark.driver.extraJavaOptions -Dhdp.version=current
spark.yarn.am.extraJavaOptions -Dhdp.version=current
运行:登陆安装Spark那台机器,./spark-shell --master yarn
提交作业:./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] [app options]
例子:
./spark-submit --master yarn --class com.dajiangtai.spark.MyWordCout ~/learning-saprk-1.0-SNAPSHOT.jar /tmp/test /tmp/output
架构:1)Yarn standalone/yarn cluster
调度器是yarn-cluster(YarnClusterScheduler),Driver和AM运行在起,Client单独的
./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] [app options]
在这里插入图片描述
Spark Driver首选作为一个ApplicationMaster在Yarn集群中启动,客户端提交给ResourceManager的每一个job都会在集群的worker节点上分配一个唯一的ApplicationMaster,
由该ApplicationMaster管理全生命周期的应用。因为Driver程序在YARN中运行,所以事先不用启动Spark Master/Client,应用的运行结果不能再客户端显示(可以在history server中查看)
在这里插入图片描述
2)Yarn client
调度器:yarn-client(YarnClientClusterScheduler)
Client和Driver运行在一起(运行在本地),AM只用来管理资源
./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode client [options] [app options]
在这里插入图片描述
Spark driver和client在本地。在Yarn-client模式下,Driver运行在Client上,通过ApplicationMaster向RM获取资源。本地Driver负责与所有的executor container进行交互,并将最后的结果汇总。结束掉终端,相当于kill掉这个spark应用。一般来说,如果运行的结果仅仅返回到terminal上时需要配置这个
8、其他配置
环境变量:
spark-env.sh
spark.yarn.appMasterEnv.[EnvironmentVariableName]

配置:–conf PROP=VALUE,为单独的app指定个性化参数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
特别注意
在cluster mode下,yarn.nodemanager.local-dirs对 Spark executors 和Spark driver都管用, spark.local.dir将被忽略
在client mode下, Spark executors 使用yarn.nodemanager.local-dirs, Spark driver使用spark.local.dir
–files and –archives支持用#映射到hdfs
–jars

spark-submit
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用spark-submit命令提交Spark应用程序到YARN集群模式,可以按照以下步骤进行操作: 1. 确保已经安装了SparkYARN,并且配置了正确的环境变量。 2. 编写Spark应用程序代码,并将其打包成jar包。 3. 打开终端,输入以下命令: ``` spark-submit --class <main-class> --master yarn --deploy-mode cluster <jar-file> <args> ``` 其中,`<main-class>`是Spark应用程序的主类名,`<jar-file>`是打包好的jar包路径,`<args>`是传递给应用程序的参数。 4. 提交命令后,Spark会将应用程序提交到YARN集群中,并在集群中启动应用程序的Driver程序。 5. 可以通过YARN的Web界面或命令行工具来监控应用程序的运行状态和日志输出。 注意事项: - 在提交应用程序时,需要指定`--master yarn`和`--deploy-mode cluster`参数,以告诉Spark将应用程序提交到YARN集群中运行。 - 如果应用程序需要访问HDFS或其他外部资源,需要在应用程序中指定相应的路径或URL,并确保YARN集群中的节点也能够访问这些资源。 - 在提交应用程序时,可以通过`--num-executors`、`--executor-memory`、`--executor-cores`等参数来指定应用程序在集群中的资源分配情况。 ### 回答2: Spark是一个快速、通用、可扩展的大数据处理引擎,能够处理包括离线批处理、实时流处理、图形处理等多种数据处理场景。其中,Spark中常见的数据处理方式是通过RDD(弹性分布式数据集)来进行计算处理。 对于Spark应用的部署,有两种方式:一种是通过Spark Standalone模式,将Spark应用作为单一进程的方式运行;另一种则是通过YARN模式,将Spark应用分布到一组计算节点中去运行。在这里,我们介绍一种常见的部署方式:通过spark-submit命令将应用提交到YARN集群上运行spark-submit命令是Spark提供的专门用于提交应用的命令,根据不同的运行模式,有不同的参数指定方式。其中,将应用部署到YARN模式的一般命令如下: ``` ./bin/spark-submit \ --class [app-class] \ --master yarn \ --deploy-mode cluster \ [--executor-memory <memory>] \ [--num-executors <num>] \ [path-to-app-jar] [app-arguments] ``` 其中,各参数含义如下: 1. --class:指定应用的入口类。 2. --master:指定Spark应用运行YARN模式下。 3. --deploy-mode:指定应用在YARN模式下的部署方式,有两种模式client和cluster。其中,client模式是指在本地运行应用,而cluster模式则是将应用提交到YARN集群上运行。 4. --executor-memory:指定每个executor占用的内存大小。 5. --num-executors:指定在YARN集群上运行的executor数目。 6. [path-to-app-jar]:指定应用程序的jar包路径。 7. [app-arguments]:应用的命令行参数。 需要注意的是,将应用提交到YARN集群上运行时,需要提前从HDFS中将数据加载到内存中,否则可能会降低应用的性能。在代码中,可以通过使用SparkContext的textFile等方法,将HDFS中的数据读取到RDD中进行处理。 总之,通过spark-submit命令将Spark应用部署到YARN集群上运行,可以充分利用集群资源,实现高效处理大规模数据。而在代码编写方面,需要注意处理好HDFS中数据的读取和分布式操作等问题。 ### 回答3: Spark是一种开源的大数据处理框架,其可以通过Spark-submit进行提交。Spark-submit是一个命令行工具,可用于将Spark应用程序提交到集群中运行。它支持多种模式,包括local模式、standalone模式yarn-cluster模式等。其中,在yarn-cluster模式中,Spark应用程序将在YARN集群上运行。 在使用Spark-submit提交Spark应用程序到YARN集群的时候,需要考虑以下几个方面: 1. 配置参数 首先,需要指定Spark-submit的参数,例如--class参数用于指定要运行的主类。在YARN集群上运行Spark应用程序需要使用--master参数,并将其设置为yarn-cluster。同时,可以添加其它的参数,例如--num-executors用于设置执行程序的数量,--executor-memory用于设置每个执行程序的内存。 示例: spark-submit --class com.test.TestApp \ --master yarn-cluster \ --num-executors 5 \ --executor-memory 4G \ /path/to/your/application.jar 2. 配置环境 为了让Spark应用程序在YARN集群上运行,需要为其配置适当的环境。需要确保所有必要的依赖项都已安装,并将其添加到Spark-submit命令中。在集群节点上,需要确保Spark和Hadoop已正确配置并运行。 3. 访问资源 将应用程序提交到YARN集群后,需要确保它能够访问必要的资源。这些资源包括存储在HDFS中的数据和应用程序所需的库和文件。如果应用程序需要访问外部资源,则还需要配置适当的访问权限。 总的来说,Spark-submit提交yarn-cluster模式是一种将Spark应用程序提交到YARN集群上运行的方法。在提交之前,需要考虑配置参数、配置环境和访问资源,以确保应用程序能够正确运行并访问所需的资源和库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值