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的更多相关文章

  1. spark第四篇:Running Spark on YARN

    确保HADOOP_CONF_DIR或者YARN_CONF_DIR指向hadoop集群配置文件目录.这些配置用来写数据到hdfs以及连接yarn ResourceManager.(在$SPARK_HOM ...

  2. 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- ...

  3. 运行 Spark on YARN

    运行 Spark on YARN Spark 0.6.0 以上的版本添加了在yarn上执行spark application的功能支持,并在之后的版本中持续的 改进.关于本文的内容是翻译官网的内容,大 ...

  4. Spark源码系列(七)Spark on yarn具体实现

    本来不打算写的了,但是真的是闲来无事,整天看美剧也没啥意思.这一章打算讲一下Spark on yarn的实现,1.0.0里面已经是一个stable的版本了,可是1.0.1也出来了,离1.0.0发布才一 ...

  5. 【原】Spark on YARN

    在YARN上运行Spark 在Spark0.6.0版本开始支持YARN模式,随后的版本在逐渐地完善. 在YARN上启动Spark 确保HADOOP_CONF_DIR或YARN_CONF_DIR属性的值 ...

  6. Spark On YARN内存分配

    本文转自:http://blog.javachen.com/2015/06/09/memory-in-spark-on-yarn.html?utm_source=tuicool 此文解决了Spark ...

  7. 【原创】大数据基础之Spark(2)Spark on Yarn:container memory allocation容器内存分配

    spark 2.1.1 最近spark任务(spark on yarn)有一个报错 Diagnostics: Container [pid=5901,containerID=container_154 ...

  8. spark on yarn 内存分配

    Spark On YARN内存分配 本文主要了解Spark On YARN部署模式下的内存分配情况,因为没有深入研究Spark的源代码,所以只能根据日志去看相关的源代码,从而了解“为什么会这样,为什么 ...

  9. Spark记录-Spark On YARN内存分配(转载)

    Spark On YARN内存分配(转载) 说明 按照Spark应用程序中的driver分布方式不同,Spark on YARN有两种模式: yarn-client模式.yarn-cluster模式. ...

随机推荐

  1. Django 学习笔记(六)MySQL配置

    环境:Ubuntu16.4 工具:Python3.5 一.安装MySQL数据库 终端命令: sudo apt-get install mysql-server sudo apt-get install ...

  2. HTML (Hyper Text Markup Language) 常用标签

    HTML是什么?  英文全称:Hyper Text Markup Language  中文全称:超文本标记语言  网页主要由 机构  表现 行为  组成 什么是标签?    < > 里的叫 ...

  3. 再起航,我的学习笔记之JavaScript设计模式16(享元模式)

    ### 享元模式 **享元模式(Flyweight):** 运用共享技术有效地支持大量的细粒度的对象,避免对象间拥有相同内容造成多余的开销. 上回我们在组合模式中创建了文章列表类,这次我们要向不同的文 ...

  4. SQL Server内存

    背景 最近一个客户找到我说是所有的SQL Server 服务器的内存都被用光了,然后截图给我看了一台服务器的任务管理器.如图 这里要说明一下任务管理器不会完整的告诉真的内存或者CPU的使用情况,也就是 ...

  5. CVTE前端笔试编程题

    这些题目是做完笔试之后,在别的地方找到的,现在附上. 1.(1)这题考察的怎么把参数转换为数组,然后再截取你想要的位数. function C(){ var a_args=Array.prototyp ...

  6. input长度随输入内容动态变化 input光标定位在最右侧

    <input type="text" onkeydown="this.onkeyup();" onkeyup="this.size=(this. ...

  7. diplay:table-cell和伪元素:after方法让图片居中

    让图片居中和文字居中是不一样的,文字居中可以通过line-height等调整,让图片居中方法,参考各种资料博文和测试  目前接触两种方法 display:table-cell和伪元素:after方法 ...

  8. Mysql介绍和实践总结

    本文首先介绍mysql的安装和基本使用.进阶操作.讲解mysql的导入导出和自动备份,然后介绍安全模式修改密码和mysql的全文本搜索功能,最后记录了个人使用mysql中遇到的问题集. 开始安装: s ...

  9. WPF的TextBox水印效果详解

    一种自以为是的方式: 本来只是想简单的做个水印效果,在文本框内容为空的时候提示用户输入,这种需求挺常见.网上一搜 都是丢给你你一大段xaml代码.用c#代码实现我是不倾向了 既然用wpf就得Xaml啊 ...

  10. 历上最强的音乐播放器(jetA…

    原文地址:历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉化版)下载作者:盖世天星 历上最强的音乐播放器(jetAudio-8.0.5.320-Plus-VX-完全汉 ...