Running Spark on YARN
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 \
--queue thequeue \
lib/spark-examples*.jar \
以上启动一个启动默认应用程序主服务器的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获取令牌。
Running Spark on YARN的更多相关文章
- spark第四篇:Running Spark on YARN
确保HADOOP_CONF_DIR或者YARN_CONF_DIR指向hadoop集群配置文件目录.这些配置用来写数据到hdfs以及连接yarn ResourceManager.(在$SPARK_HOM ...
- Spark记录-源码编译spark2.2.0(结合Hive on Spark/Hive on MR2/Spark on Yarn)
#spark2.2.0源码编译 #组件:mvn-3.3.9 jdk-1.8 #wget http://mirror.bit.edu.cn/apache/spark/spark-2.2.0/spark- ...
- 运行 Spark on YARN
运行 Spark on YARN Spark 0.6.0 以上的版本添加了在yarn上执行spark application的功能支持,并在之后的版本中持续的 改进.关于本文的内容是翻译官网的内容,大 ...
- Spark源码系列(七)Spark on yarn具体实现
本来不打算写的了,但是真的是闲来无事,整天看美剧也没啥意思.这一章打算讲一下Spark on yarn的实现,1.0.0里面已经是一个stable的版本了,可是1.0.1也出来了,离1.0.0发布才一 ...
- 【原】Spark on YARN
在YARN上运行Spark 在Spark0.6.0版本开始支持YARN模式,随后的版本在逐渐地完善. 在YARN上启动Spark 确保HADOOP_CONF_DIR或YARN_CONF_DIR属性的值 ...
- Spark On YARN内存分配
本文转自:http://blog.javachen.com/2015/06/09/memory-in-spark-on-yarn.html?utm_source=tuicool 此文解决了Spark ...
- 【原创】大数据基础之Spark(2)Spark on Yarn:container memory allocation容器内存分配
spark 2.1.1 最近spark任务(spark on yarn)有一个报错 Diagnostics: Container [pid=5901,containerID=container_154 ...
- spark on yarn 内存分配
Spark On YARN内存分配 本文主要了解Spark On YARN部署模式下的内存分配情况,因为没有深入研究Spark的源代码,所以只能根据日志去看相关的源代码,从而了解“为什么会这样,为什么 ...
- Spark记录-Spark On YARN内存分配(转载)
Spark On YARN内存分配(转载) 说明 按照Spark应用程序中的driver分布方式不同,Spark on YARN有两种模式: yarn-client模式.yarn-cluster模式. ...
随机推荐
- Django 学习笔记(六)MySQL配置
环境:Ubuntu16.4 工具:Python3.5 一.安装MySQL数据库 终端命令: sudo apt-get install mysql-server sudo apt-get install ...
- HTML (Hyper Text Markup Language) 常用标签
HTML是什么? 英文全称:Hyper Text Markup Language 中文全称:超文本标记语言 网页主要由 机构 表现 行为 组成 什么是标签? < > 里的叫 ...
- 再起航,我的学习笔记之JavaScript设计模式16(享元模式)
### 享元模式 **享元模式(Flyweight):** 运用共享技术有效地支持大量的细粒度的对象,避免对象间拥有相同内容造成多余的开销. 上回我们在组合模式中创建了文章列表类,这次我们要向不同的文 ...
- SQL Server内存
背景 最近一个客户找到我说是所有的SQL Server 服务器的内存都被用光了,然后截图给我看了一台服务器的任务管理器.如图 这里要说明一下任务管理器不会完整的告诉真的内存或者CPU的使用情况,也就是 ...
- CVTE前端笔试编程题
这些题目是做完笔试之后,在别的地方找到的,现在附上. 1.(1)这题考察的怎么把参数转换为数组,然后再截取你想要的位数. function C(){ var a_args=Array.prototyp ...
- input长度随输入内容动态变化 input光标定位在最右侧
<input type="text" onkeydown="this.onkeyup();" onkeyup="this.size=(this. ...
- diplay:table-cell和伪元素:after方法让图片居中
让图片居中和文字居中是不一样的,文字居中可以通过line-height等调整,让图片居中方法,参考各种资料博文和测试 目前接触两种方法 display:table-cell和伪元素:after方法 ...
- Mysql介绍和实践总结
本文首先介绍mysql的安装和基本使用.进阶操作.讲解mysql的导入导出和自动备份,然后介绍安全模式修改密码和mysql的全文本搜索功能,最后记录了个人使用mysql中遇到的问题集. 开始安装: s ...
- WPF的TextBox水印效果详解
一种自以为是的方式: 本来只是想简单的做个水印效果,在文本框内容为空的时候提示用户输入,这种需求挺常见.网上一搜 都是丢给你你一大段xaml代码.用c#代码实现我是不倾向了 既然用wpf就得Xaml啊 ...
- 历上最强的音乐播放器(jetA…
原文地址:历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉化版)下载作者:盖世天星 历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉 ...