Running Spark on YARN

对 YARN (Hadoop NextGen) 的支持是从Spark-0.6.0开始的,后续的版本也一直持续在改进。

Launching Spark on YARN

确保HADOOP_CONF_DIR或YARN_CONF_DIR指向包含Hadoop集群的(客户端)配置文件的目录。这些配置用于写入HDFS并连接到YARN ResourceManager。此目录中包含的配置将分发到YARN群集,以便应用程序使用的所有容器都使用相同的配置。如果配置引用了不受YARN管理的Java系统属性或环境变量,那么也应该在Spark应用程序的配置(驱动程序,执行程序和AM在客户端模式下运行时)中进行设置。

有两种可用于在YARN上启动Spark应用程序的部署模式。在cluster模式下,Spark驱动程序在由集群上的YARN管理的应用程序主进程中运行,客户端可以在启动应用程序后结束。在client 模式下,驱动程序在客户端进程中运行,应用程序主程序仅用于从YARN请求资源。

不同于Spark独立和Mesos模式,其中master地址在--master参数中指定,在YARN模式下,ResourceManager的地址从Hadoop配置中提取。因此,--master参数是yarn。

要在cluster模式下启动Spark应用程序:

$ ./bin/spark-submit --class path.to.your.Class --master yarn --deploy-mode cluster [options] <app jar> [app options]
$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \--master yarn \--deploy-mode cluster \--driver-memory 4g \--executor-memory 2g \--executor-cores 1 \--queue thequeue \lib/spark-examples*.jar \10

以上启动一个启动默认应用程序主服务器的YARN客户端程序。那么SparkPi将作为Application Master的子线程运行。客户端将定期轮询应用程序主机的状态更新并将其显示在控制台中。您的应用程序运行完毕后,客户端将退出。有关如何查看驱动程序和执行程序日志,请参阅下面的“调试应用程序”部分。

要在客户端模式下启动Spark应用程序,请执行相同操作,但将cluster 替换为client。以下显示如何在客户端模式下运行spark-shell:

$ ./bin/spark-shell --master yarn --deploy-mode client

 

 

Adding Other JARs

在cluster模式下,驱动程序在与客户机不同的机器上运行,因此SparkContext.addJar将不会与客户端本地的文件一起使用。要使客户端上的文件可用于SparkContext.addJar,请在启动命令中使用--jars选项包含它们。

$ ./bin/spark-submit --class my.main.Class \--master yarn \--deploy-mode cluster \--jars my-other-jar.jar,my-other-other-jar.jar \my-main-jar.jar \app_arg1 app_arg2

准备

在YARN上运行Spark需要使用构建分发支持YARN的Spark的二进制。二进制分发可以从项目网站的downloads page 下载。要自己构建Spark,请参阅构建Building Spark。

要使Spark运行时jar可以从YARN端访问,可以指定spark.yarn.archive或spark.yarn.jars。有关详细信息,请参阅Spark Properties。如果没有指定spark.yarn.archive或spark.yarn.jars,Spark将在$ SPARK_HOME / jars下创建一个包含所有jar的zip文件,并将其上传到分布式缓存。

Spark的YARN上的大部分配置与其他部署模式相同。有关这些信息的详细信息,请参阅配置页面。这些是特定于YARN上Spark的配置。

调试应用

在YARN术语中,执行者和应用程序主人在“containers”内部运行。应用程序完成后,YARN有两种处理容器日志的方式。如果日志聚合已打开(使用yarn.log-aggregation-enable config),容器日志将复制到HDFS并在本地计算机上删除。可以使用yarn日志命令从群集上的任何位置查看这些日志。

yarn logs -applicationId <app ID>

将从给定的应用程序中打印出来自所有容器的所有日志文件的内容。您还可以使用HDFS shell或API直接在HDFS中查看容器日志文件。可以通过查看YARN配置(yarn.nodemanager.remote-app-log-dir和yarn.nodemanager.remote-app-log-dir-suffix)找到它们所在的目录。日志也可在Spark Web UI的“执行程序”选项卡下使用。您需要同时运行Spark历史记录服务器和MapReduce历史记录服务器,并正确地在yarn-site.xml中配置yarn.log.server.url。Spark历史记录服务器UI上的日志URL将重定向到MapReduce历史记录服务器以显示聚合日志

Important notes

核心请求是否符合调度决策取决于正在使用及配置哪个调度程序。

在cluster模式下,Spark执行程序和Spark驱动程序使用的本地目录将是为YARN(Hadoop YARN config yarn.nodemanager.local-dirs)配置的本地目录。如果用户指定了spark.local.dir,它将被忽略。在client模式下,Spark-executors将使用为YARN配置的本地目录,而Spark-driver将使用在spark.local.dir中定义的目录。这是因为Spark驱动程序在client模式下不会提交到YARN群集上,只有Spark执行程序才提交。

--files和--archives选项支持通过#指定HADOOP中文件名。例如指定 --files localtest.txt#appSees.txt。这将把您本地名为localtest.txt的文件上传到HDFS,但是这将通过名称appSees.txt链接,您的应用程序应该使用appSees.txt名称在YARN上运行时引用它。

如果您使用本地文件并以cluster模式运行,则--jars选项允许SparkContext.addJar函数正常工作。如果您使用HDFS,HTTP,HTTPS或FTP文件,则不需要使用它。

Running in a Secure Cluster

正如security一章所涵盖的那样,Kerberos用于在安全的Hadoop集群中验证服务和客户端相关联的主体。这允许客户端提出这些认证服务的请求;授予授权人员的权利的服务。

Hadoop服务问题hadoop令牌允许访问服务和数据。客户端必须首先获取他们将访问的服务的tokens,并将其与应用一起传递到YARN。

对于Spark应用程序与任何Hadoop文件系统(例如hdfs,webhdfs等),HBase和Hive进行交互,它必须使用启动应用程序的用户的Kerberos凭据来获取相关的令牌,也就是说,以身份的主体将运行的Spark应用程序。

这通常在启动时完成:在安全集群中,Spark将自动获取集群的默认Hadoop文件系统的令牌,并可能为HBase和Hive获取令牌。

转载于:https://www.cnblogs.com/Dhouse/p/7515157.html

Running Spark on YARN相关推荐

  1. 【甘道夫】Spark1.3.0 Running Spark on YARN 官方文档精华摘要

    引言 由于工作需要,即将拥抱Spark,曾经进行过相关知识的学习,现在计划详细读一遍最新版本Spark1.3的部分官方文档,一是复习,二是了解最新进展,三是为公司团队培训做储备. 欢迎转载,请注明出处 ...

  2. 解决Exception in thread “main“ org.apache.spark.SparkException: When running with master ‘yarn‘ either

    Exception in thread "main" org.apache.spark.SparkException: When running with master 'yarn ...

  3. 使用spark运行yarn的时候, java.lang.Exception: When running with master 'yarn' either HADOOP_CONF_DIR or YAR

    一:报错信息 使用spark运行yarn的时候,报错Exception in thread "main" java.lang.Exception: When running wit ...

  4. 2021年大数据Spark(九):Spark On Yarn两种模式总结

    目录 Spark On Yarn两种模式 引入 一.当一个MR应用提交运行到Hadoop YARN上时 二.当一个Spark应用提交运行在集群上时 注意 client 模式 cluster 模式 总结 ...

  5. Spark通过YARN提交任务不成功(包含YARN cluster和YARN client)

    无论用YARN cluster和YARN client来跑,均会出现如下问题. [spark@master spark-1.6.1-bin-hadoop2.6]$ jps 2049 NameNode ...

  6. Spark on Yarn 模式编写workcount实例

    Spark on Yarn 模式编写workcount实例 一:上传输入文件到hadoop,本例上传的文件名为spark.txt 二:打包程序,打包名为:Spark-0.0.1-SNAPSHOT.ja ...

  7. Spark On Yarn 运行项目

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

  8. spark on yarn 配置及异常解决

    转载请务必注明原创地址为:https://dongkelun.com/2018/04/16/sparkOnYarnConf/ 前言 YARN 是在Hadoop 2.0 中引入的集群管理器,它可以让多种 ...

  9. spark on yarn的未解之谜

    对spark on yarn研究比较多的朋友都应该发现过你明明给executor申请了1GB内存,结果发现该executor占用了yarn的2GB内存. 其实,对于spark的driver和execu ...

最新文章

  1. mysql将权限分为几个层级_MySQL多层级结构-区域表使用树详解
  2. STM32开发 -- UCOSII
  3. [转载]Google用户体验设计准则
  4. Django模板语法
  5. servlet--百度百科
  6. X++中对字符串进行操作的函数
  7. js和php难度,有js基础和简单的php基础,但是学习nodejs还是很吃力
  8. 消息服务器mq集群出现假死,排查tomcat项目假死原因的简单方法
  9. 网站流量少的原因及解决方案
  10. 无法使用资源管理器浏览文档库?
  11. janusgraph 可视化工具
  12. 《第一行代码》完结篇
  13. 2021全国省市区街道(乡镇)数据及编码(不包含港澳台)
  14. CentOS 6.X yum源更新(阿里云默认最新更新为CentOS6.10)
  15. 回归云平台的本质,通过平台+应用模式实现软件资源线上共享
  16. java isreachable_java-奇数InetAddress.isReachable()问题
  17. MySql 函数大全
  18. 笔记本wifi模块消失问题解决方法(win10,当你使用校园网客户端时)
  19. 计算机ppt2007考试试题,全国计算机等级考试二级officeppt演示文稿题目
  20. 20181212股票复盘

热门文章

  1. python编程if语法-Python编程入门基础语法详解经典
  2. 少儿编程python线上课程-少儿编程课堂|python – 用游戏学编程
  3. python常用内置模块-Python之OS模块常用内置方法汇总
  4. python批量下载网页文件-超简单超详细python小文件、大文件、批量下载教程
  5. 数据分析 python 用途-python数据统计分析
  6. python 框架好学吗-python的flask框架难学吗
  7. 用python画爱心的代码-Python一行代码画个爱心案例
  8. python游戏编程入门txt-Python真好玩:教孩子学编程 PDF 完整原版
  9. python简单编程例子-python简单实例训练(21~30)
  10. python处理excel表格数据-利用Python处理和分析Excel表中数据实战.doc