YARN 作业 Staging目录的用途及配置
目录
- staging目录的用途
- MapReduce作业Staging的配置
- 示例
- Spark 作业Staging目录的配置
- 示例
staging目录的用途
关于staging目录可能很多人都不太会关注,毕竟日常运行作业也用不到这些配置。不过了解它对于我们理解作业的执行流程也是有所帮助的,比如我们都会使用hadoop jar 或 spark-submit等命令来提交一个MR或Spark作业,然后我们就会看到在集群的某些计算节点上启动executor(MapRedece对应的是mapper和reducer)来执行任务。这些executor都是一个JVM进程,既然如此,那么启动一个JVM进程必然需要用到至少一个jar包,那这些jar包是从哪里来的呢?此时就用到了staging 目录(有人把staging翻译为舞台目录,这也有一定的含义,提交作业,就要登上集群这个舞台了)了。提交作业的时候,会把相关的jar包和配置信息都上传到这个staging目录下,然后在启动executor之前,会从这里将这些信息下载到计算节点本地。
MapReduce作业Staging的配置
- yarn.app.mapreduce.am.staging-dir:提交mapreduce作业的staging目录,默认是/tmp/hadoop-yarn/staging
- yarn.app.mapreduce.am.staging-dir.erasurecoding.enabled:staging目录下的文件是否使用纠删码方式存储,默认false,这可以在提交作业时指定
- mapreduce.client.submit.file.replication:提交到staging目录下的文件的副本数,默认是10
- mapreduce.job.split.metainfo.maxsize:split元数据信息文件的最大大小,默认10000000,超过该大小AppMaster将不会再读取。设置为-1,则表示不限制该文件的大小。这个文件通常不会很大,一般也不会去单独设置
示例
下面从一个实际的MR作业来看一下stageing目录中的内容,可以看到文件job.jar和job.split以及libjars目录中的文件副本数都是10,这个10就是由配置项mapreduce.client.submit.file.replication指定的
下面通过提交一个测试作业验证一下这个配置项,指定mapreduce.client.submit.file.replication为12
作业提交后,查看对应的staging 目录文件,如下,说明配置参数生效了
最后解释一下这些文件的副本为什么是10呢,难道3副本还不能满足数据安全的要求吗?这里其实涉及到MR作业运行时的一个步骤就是资源本地化,本文开头已经介绍过staging目录的作用了,而比如一个MR作业的mapper有几百几千个的时候,那么就意味着会有上千的客户端会同时下载这个jar包,此时将这个jar包的副本数设置的大一点可以提高资源本地化的效率,而反之如果只是一个很小的MR作业,这么高的副本数就是浪费了。这也侧面说明了MR的设计初衷就是面向大规模数据的。
Spark 作业Staging目录的配置
下面是spark on yarn模式下的配置
- spark.yarn.submit.file.replication:提交作业时上传到HDFS相关文件的副本数,默认是HDFS的默认副本数,通常是3
- spark.yarn.stagingDir:提交作业时的staging目录,默认是用户的家目录
- spark.yarn.preserve.staging.files:在提交作业时的staged 文件(Spark jar, app jar, distributed cache files) 在作业结束时是否保留,默认false,也就是作业执行结束后进行删除
示例
下面从一个实际的Spark作业来看一下stageing目录中的内容
可以看到,和MR作业的Staging目录相比,spark并未将spark的jar包设置为10副本;而且把配置信息和jar包分别进行了压缩,结构相对简单一点。
YARN 作业 Staging目录的用途及配置相关推荐
- influxdb tsm文件_利用InfluxDB+Grafana搭建Flink on YARN作业监控大屏
Flink 从入门到精通 系列文章 前言 虽然笔者之前写过基于Prometheus PushGateway搭建Flink监控的过程,但是在我们的生产环境中,使用的是InfluxDB.InfluxDB是 ...
- Confluence 6 从外部目录中同步数据配置同步间隔
在用户目录(User Directories)界面中显示了最后的系统同步时间,包括有这次同步所花费的时间. 注意:针对 Crowd 和 Jira 目录同步时间的配置只在 Confluence 3.5 ...
- Linux五部分的含义,Linux 目录下部分重要目录的用途及含义及一些命令的作用
Linux根目录下部分重要目录的用途及含义 /proc:这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息.也就是说,这个目录的内容不在硬盘上而是在内存里. /sys:系统 (syste ...
- linux系统下nginx安装目录和nginx.conf配置文件目录
linux系统下nginx安装目录和nginx.conf配置文件目录 1.查看nginx安装目录 输入命令 # ps -ef | grep nginx 返回结果包含安装目录 root 26 ...
- 启动代码格式:nginx安装目录地址 -c nginx配置文件地址
启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 例如: [root@LinuxServer sbin]# /usr/local/nginx/sbin/nginx -c /us ...
- 安装默认报表服务器虚拟目录,报表服务器虚拟目录(Reporting Services 配置)
报表服务器虚拟目录(Reporting Services 配置) 12/15/2008 本文内容 使用"报表服务器虚拟目录"页可以配置报表服务器的虚拟目录.用于访问报表服务器 We ...
- linux samba 多个目录,linux7 Samba服务配置,多个部门相应管理自己的项目目录,其他有访问权限...
多个部门相应管理自己的项目目录,对其他部门项目目录只有访问权限. 1.创建组和用户,使用useradd命令新建系统账户,然后再使用smbpasswd –a建立SMB账户. 2.创建目录文件 3更改目录 ...
- 设置微信小程序支持npm(解决微信小程序npm构建时提示“没有找到可以构建的NPM包,请确认需要参与构建的npm都在miniprogramroot目录内,或配置project...”错误)的方法
提示:通过微信开发者工具创建小程序工程后,默认是不开启npm的,需要修改小程序npm配置参数,否则将会提示"没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 minipro ...
- LWN: 内核staging目录的驱动们最后下场如何?
点击上方蓝色"Linux News搬运工"关注我们~ What happens to kernel staging-tree code By Jonathan Corbet sta ...
最新文章
- python栈溢出_Python栈溢出【新手必学】
- 当程序崩溃的时候怎么办
- Microsoft Visual Studio 宏脚本添加注释模板
- 微信悄然上线了十款新表情,你注意到了吗?
- test libvirt
- 8tupian图片加密平台源码 v3.5
- 使用js对select动态添加和删除OPTION示例代码
- Jquery 获取 radio选中值(转)
- 基于Bokeh库,手把手教你制作“子弹图“和“瀑布图“!
- linux从a自增10_C语言程序前后自增(++a、a++)在Linux下的实现机制
- git checkout远程分支_Git检出远程分支
- win7开机动画_win7系统怎么修改开机动画 win7系统开机动画修改方法
- dataworks/odps上传资源,注册函数,下载资源
- php字符串常用内置函数
- Golang mgo 剖析之 Session
- 短信接口被恶意调用?企业短信防火墙+【中昱维信】短信验证码【Java】
- 上海疫情后一个前端的面试心路历程
- 360更新补丁之后,程序无法运行解决历程
- Python3使用动态规划处理背包问题:完全背包(含背包恰好装满的情况)
- Token及Token经济