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模式. ...
随机推荐
- 堆排序—Java
堆排序: 一棵完全二叉树,如果父节点的值大于等于左右节点的值,则称此完全二叉树为小根堆(小顶堆):如果父节点的值小于等于左右节点的值,则次完全二叉树为大根堆(大顶堆). 堆排序是建立在大顶堆或小顶堆的 ...
- python 数据驱动(ddt)
DDT包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),file_data(可以从json或者yaml中获取测试数据) 实例代码: import ddt import unittest ...
- 安装lvs过程
linux我是最小化安装的mini,安装完成后搭建本地yum,首先安装Development Tools开发工具组 1)在各服务器上修改主机名: [root@LVS1 ~]# hostname LVS ...
- 为测试赋能,腾讯WeTest探索手游AI自动化测试之路
作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...
- 创建DNS子域及view
author:JevonWei 版权声明:原创作品 子域 子域同父域在同一个服务器上 新建子域jevon.danran.com vim /etc/named.rfc1912.zones zone &q ...
- 通过ssh协议实现用户key认证登录
author:JevonWei 版权声明:原创作品 用户实现key认证登录 主机A 192.168.198,134 主机B 192.168.198,131 主机C 192.168.198,136 创建 ...
- JS源生代码“增删改查”之增
51呢最近在做一个管理数据的,第一次接触到用JS的源代码去实现一些功能,才知道网页里的许多功能都是依赖于“增删改查”完成的,下面的几张图片就是对于增的演示: 下面是有关HTML的代码:这个主要是弹窗部 ...
- java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别
java基础解析系列(五)---HashMap并发下的问题以及HashTable和CurrentHashMap的区别 目录 java基础解析系列(一)---String.StringBuffer.St ...
- MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题
1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...
- Js函数初学者练习(一)switch-case结构实现计算器。
前 言 JRedu 给大家介绍一点JS函数的练习题希望初学者多做一些练习能够更好的掌握JS的函数,以及能够提升大家的逻辑思维.(我也是个渣渣希望路过的大神多提建议或意见) 希望能够对大家有所帮助 ...