Spark

在spark 中,支持4中运行模式:

1)Local:开发时使用

2)Standalone: 是spark 自带的,如果一个集群是standalong 的话,那么就需要在多台机器上同时部署spark 环境

3)Yarn:建议大家在生产上使用该模式,统一使用yarn 进行整个集群作业(mr、spark)的资源调度

4)Mesos :跟yarn使用一样都是资源调度

不管使用什么模式,spark应用程序的代码都是一模一样的,只需要在提交的时候通过--master 参数来指定我们的运行模式即可

Client

Driver运行在client端(提交spark作业的机器)

client会和请求到container进行通信来完成作业的调度和执行,client是不能退出的

日志信息会在控制台输出:便于我们测试

Cluster

Driver运行在ApplicationMaster 中

Client 只要提交完作业之后就可以关掉,因为作业已经在YARN上运行了

日志在终端看不到的,因为日志是在Driver 上,只能通过yarn logs -applicationIdapplication_id

1.配置

安装Hadoop:需要安装HDFS模块和YARN模块,spark运行时要把jar包放到HDFS上。

安装Spark:不需要启动Spark集群,在client节点配置中spark-env.sh添加JDK和HADOOP_CONF_DIR目录,Spark程序将作为yarn的客户端用户提交任务。

export JAVA_HOME=/usr/local/jdk1.8.0_161export HADOOP_CONF_DIR=/usr/local/src/hadoop-2.6.1/etc/hadoop

启动HDFS和YARN

2.yarn-client和yarn-cluster提交任务的方式

client模式:

./bin/spark-submit \

--master yarn \

--driver-memory 1g \

--executor-memory 1g \

--executor-cores 2 \

--class org.apache.spark.examples.SparkPi \

examples/jars/spark-examples_2.11-2.0.2.jar \

1000

--master yarn(默认client模式) 等价于 yarn-client(已弃用)和--master yarn --deploy-mode client

spark-shell和pypark必须使用yarn-client模式,因为这是交互式命令,Driver需运行在本地。

cluster模式:

./bin/spark-submit \

--master yarn \

--deploy-mode cluster \

--class org.apache.spark.examples.SparkPi  \

examples/jars/spark-examples_2.11-2.0.2.jar \

1000

3.两种模式的区别

cluster模式:Driver程序在YARN中运行,Driver所在的机器是随机的,应用的运行结果不能在客户端显示只能通过yarn查看,所以最好运行那些将结果最终保存在外部存储介质(如HDFS、Redis、Mysql)而非stdout输出的应用程序,客户端的终端显示的仅是作为YARN的job的简单运行状况。

client模式:Driver运行在Client上,应用程序运行结果会在客户端显示,所有适合运行结果有输出的应用程序(如spark-shell)

4.原理

cluster模式:

Spark Driver首先作为一个ApplicationMaster在YARN集群中启动,客户端提交给ResourceManager的每一个job都会在集群的NodeManager节点上分配一个唯一的ApplicationMaster,由该ApplicationMaster管理全生命周期的应用。具体过程:

1. 由client向ResourceManager提交请求,并上传jar到HDFS上

这期间包括四个步骤:

a).连接到RM

b).从RM的ASM(ApplicationsManager )中获得metric、queue和resource等信息。

c). upload app jar and spark-assembly jar

d).设置运行环境和container上下文(launch-container.sh等脚本)

2. ResouceManager向NodeManager申请资源,创建Spark ApplicationMaster(每个SparkContext都有一个ApplicationMaster)

3. NodeManager启动ApplicationMaster,并向ResourceManager AsM注册

4. ApplicationMaster从HDFS中找到jar文件,启动SparkContext、DAGscheduler和YARN Cluster Scheduler

5. ResourceManager向ResourceManager AsM注册申请container资源

6. ResourceManager通知NodeManager分配Container,这时可以收到来自ASM关于container的报告。(每个container对应一个executor)

7. Spark ApplicationMaster直接和container(executor)进行交互,完成这个分布式任务。

client模式:

在client模式下,Driver运行在Client上,通过ApplicationMaster向RM获取资源。本地Driver负责与所有的executor container进行交互,并将最后的结果汇总。结束掉终端,相当于kill掉这个spark应用。一般来说,如果运行的结果仅仅返回到terminal上时需要配置这个。

客户端的Driver将应用提交给Yarn后,Yarn会先后启动ApplicationMaster和executor,另外ApplicationMaster和executor都 是装载在container里运行,container默认的内存是1G,ApplicationMaster分配的内存是driver- memory,executor分配的内存是executor-memory。同时,因为Driver在客户端,所以程序的运行结果可以在客户端显 示,Driver以进程名为SparkSubmit的形式存在。

在client模式下,Driver运行在Client上,通过ApplicationMaster向RM获取资源。本地Driver负责与所有的executor container进行交互,并将最后的结果汇总。结束掉终端,相当于kill掉这个spark应用。一般来说,如果运行的结果仅仅返回到terminal上时需要配置这个。

客户端的Driver将应用提交给Yarn后,Yarn会先后启动ApplicationMaster和executor,另外ApplicationMaster和executor都 是装载在container里运行,container默认的内存是1G,ApplicationMaster分配的内存是driver- memory,executor分配的内存是executor-memory。同时,因为Driver在客户端,所以程序的运行结果可以在客户端显 示,Driver以进程名为SparkSubmit的形式存在。

Spark On Yarn 运行模式(详细)相关推荐

  1. 本地提交spark_spark快速入门(三)-------spark部署及运行模式

    spark支持多种部署方案,包括spark自带的standalone资源调度模式(StandAlone):运行在hadoop的yarn资源调度框架中(SparkOnYARN):local本地模式:可以 ...

  2. spark四种运行模式

    spark的核心组件 1.1Driver Spark 驱动器节点,用于执行 Spark 任务中的 main 方法,负责实际代码的执行 工作.Driver 在 Spark 作业执行时主要负责: 1.1. ...

  3. 【Spark】standalone运行模式

    简介: standalone 模式,是 spark 自己实现的,它是一个资源调度框架.这里我们要关注这个框架的三个节点: 1)client 2)master 3)worker spark 应用程序有一 ...

  4. Spark On Yarn 运行项目

    在spark中,支持4中运行模式: Local:往往使用本地开发的时候使用. StandAlone:是spark自带的,如果一个集群是StandAlone模式的话,那么就需要在多台机器上同时部署Spa ...

  5. spark on yarn yarn-client模式实现源码走读

    Spark版本2.4.0 在SparkContext的初始化过程中,将会根据配置的启动模式来选择不同的任务调度器TaskScheduler,而这个不同模式的实现也是在这里根据选择的TaskSchedu ...

  6. Spark面试:Spark on yarn 运行流程

    一: Spark on YARN能让Spark计算模型在云梯YARN集群上运行,直接读取云梯上的数据,并充分享受云梯YARN集群丰富的计算资源. 二: 基于YARN的Spark作业首先由客户端生成作业 ...

  7. spark shell的运行模式汇总

    scala语言 模式 启动命令   local模式 spark-shell --master local   yarn模式 spark-shell --master yarn   standalone ...

  8. python编程模式是什么_python 开发的三种运行模式详细介绍

    Python 三种运行模式 Python作为一门脚本语言,使用的范围很广.有的同学用来算法开发,有的用来验证逻辑,还有的作为胶水语言,用它来粘合整个系统的流程.不管怎么说,怎么使用python既取决于 ...

  9. Spark on YARN - Clinet模式运行spark报错问题

    应用场景 安装部署完完全分布式的spark后,发现yarn-cluster模式可以运行不报错,但是yarn-client报错,无法进行计算PI的值,导致spark并不能使用,报错信息如下所示,只需要修 ...

最新文章

  1. 漫画:有趣的“帽子问题”
  2. 【Graph4NLP】阿尔伯塔大学博士毕业论文:基于图结构的自然语言处理
  3. 我应该如何处理MySQL中的--secure-file-priv?
  4. LAMP架构之编译安装httpd+(php-fpm)+mariadb
  5. HDU.2561 第二小整数(water)
  6. JNI与底层调用-2
  7. html body 边框,html – 如何在表的tbody / thead部分创建边框?
  8. Apache2.4配置ssl
  9. python字符串处理函数汇总_python字符串函数总结
  10. 聊聊 | 他在Google Play安全奖励计划贡献榜单上排名第一
  11. delphi 防止程序双开 更好的 Best!
  12. 心海软件学生测试系统,心海软件心理管理系统
  13. Chrome手势插件
  14. 2021-07-08解决大部分lanzous蓝奏云链接无法打开
  15. Learning to See in the Dark阅读札记
  16. JDOM/XPath解析XML简单示例
  17. apache hop 搭建_server端
  18. Bing Maps中使用Google全球本地化搜索服务详解
  19. 页面跳转javascript操作referer
  20. 成都奔驰改装改装通风座椅 蔚一车改

热门文章

  1. 如何访问 SAP Screen Personas 培训系统以及完成一个最简单的例子
  2. SAP Spartacus list item点击之后的detail页面跳转
  3. Windows 10升级1909之后,很多软件不支持高分辨率而造成字体过小
  4. 一个filter引起的404错误
  5. SAP GraphQL console UI的实现原理
  6. progressIndicator in SalesPipeline
  7. 阮一峰react demo代码研究的学习笔记 - demo8 debug - click triggers state change
  8. SAP ui5 shell open loading dialog
  9. SAP CRM中间件sales status调试
  10. Important table for SEGW